Tracker seems to launch applications with a B_REFS_RECEIVED message in the initial message list.
Now checks if such a message is present and avoids sending B_SILENT_RELAUNCH in this case, and also in the standard case with a ref. This fixes bug #1387 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21987 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -2378,32 +2378,32 @@ BRoster::_SendToRunning(team_id team, int argc, const char *const *args,
|
|||||||
BMessenger messenger;
|
BMessenger messenger;
|
||||||
BMessenger::Private(messenger).SetTo(team, info.port,
|
BMessenger::Private(messenger).SetTo(team, info.port,
|
||||||
B_PREFERRED_TOKEN);
|
B_PREFERRED_TOKEN);
|
||||||
|
bool listContainsRefs = false;
|
||||||
|
|
||||||
// send messages from the list
|
// send messages from the list
|
||||||
if (messageList) {
|
if (messageList) {
|
||||||
for (int32 i = 0;
|
for (int32 i = 0;
|
||||||
BMessage *message = (BMessage*)messageList->ItemAt(i);
|
BMessage *message = (BMessage*)messageList->ItemAt(i);
|
||||||
i++) {
|
i++) {
|
||||||
|
listContainsRefs |= message->what == B_REFS_RECEIVED;
|
||||||
messenger.SendMessage(message);
|
messenger.SendMessage(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send B_ARGV_RECEIVED or B_SILENT_RELAUNCH (if already running)
|
// send B_ARGV_RECEIVED or B_REFS_RECEIVED or B_SILENT_RELAUNCH (if already running)
|
||||||
if (args && argc > 1) {
|
if (args && argc > 1) {
|
||||||
BMessage message(B_ARGV_RECEIVED);
|
BMessage message(B_ARGV_RECEIVED);
|
||||||
message.AddInt32("argc", argc);
|
message.AddInt32("argc", argc);
|
||||||
for (int32 i = 0; i < argc; i++)
|
for (int32 i = 0; i < argc; i++)
|
||||||
message.AddString("argv", args[i]);
|
message.AddString("argv", args[i]);
|
||||||
messenger.SendMessage(&message);
|
messenger.SendMessage(&message);
|
||||||
} else if (alreadyRunning)
|
} else if (ref) {
|
||||||
messenger.SendMessage(B_SILENT_RELAUNCH);
|
printf("_SendToRunning : B_REFS_RECEIVED\n");
|
||||||
|
|
||||||
// send B_REFS_RECEIVED
|
|
||||||
if (ref) {
|
|
||||||
BMessage message(B_REFS_RECEIVED);
|
BMessage message(B_REFS_RECEIVED);
|
||||||
message.AddRef("refs", ref);
|
message.AddRef("refs", ref);
|
||||||
messenger.SendMessage(&message);
|
messenger.SendMessage(&message);
|
||||||
}
|
} else if (alreadyRunning && !listContainsRefs)
|
||||||
|
messenger.SendMessage(B_SILENT_RELAUNCH);
|
||||||
|
|
||||||
// send B_READY_TO_RUN
|
// send B_READY_TO_RUN
|
||||||
if (!alreadyRunning)
|
if (!alreadyRunning)
|
||||||
|
|||||||
Reference in New Issue
Block a user