Changeset 21987

Show
Ignore:
Timestamp:
08/16/07 13:36:58 (15 months ago)
Author:
korli
Message:

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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • haiku/trunk/src/kits/app/Roster.cpp

    r20743 r21987  
    23792379                BMessenger::Private(messenger).SetTo(team, info.port, 
    23802380                        B_PREFERRED_TOKEN); 
     2381                bool listContainsRefs = false; 
    23812382 
    23822383                // send messages from the list 
     
    23852386                                 BMessage *message = (BMessage*)messageList->ItemAt(i); 
    23862387                                 i++) { 
     2388                                listContainsRefs |= message->what == B_REFS_RECEIVED; 
    23872389                                messenger.SendMessage(message); 
    23882390                        } 
    23892391                } 
    23902392 
    2391                 // send B_ARGV_RECEIVED or B_SILENT_RELAUNCH (if already running) 
     2393                // send B_ARGV_RECEIVED or B_REFS_RECEIVED or B_SILENT_RELAUNCH (if already running) 
    23922394                if (args && argc > 1) { 
    23932395                        BMessage message(B_ARGV_RECEIVED); 
     
    23962398                                message.AddString("argv", args[i]); 
    23972399                        messenger.SendMessage(&message); 
    2398                 } else if (alreadyRunning) 
    2399                         messenger.SendMessage(B_SILENT_RELAUNCH); 
    2400  
    2401                 // send B_REFS_RECEIVED 
    2402                 if (ref) { 
     2400                } else if (ref) {  
     2401                        printf("_SendToRunning : B_REFS_RECEIVED\n"); 
    24032402                        BMessage message(B_REFS_RECEIVED); 
    24042403                        message.AddRef("refs", ref); 
    24052404                        messenger.SendMessage(&message); 
    2406                 } 
     2405                } else if (alreadyRunning && !listContainsRefs) 
     2406                        messenger.SendMessage(B_SILENT_RELAUNCH); 
    24072407 
    24082408                // send B_READY_TO_RUN