VirtualBox

Changeset 30591 in vbox


Ignore:
Timestamp:
Jul 2, 2010 6:41:57 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
63316
Message:

Main: events bits

Location:
trunk/src/VBox/Main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/ConsoleImpl.cpp

    r30564 r30591  
    49764976        }
    49774977        evDesc.init(mEventSource, VBoxEventType_OnCanShowWindow);
    4978         BOOL fDelivered = evDesc.fire(10000); /* Wait up to 10 secs for delivery */
    4979         Assert(fDelivered);
     4978        BOOL fDelivered = evDesc.fire(5000); /* Wait up to 5 secs for delivery */
     4979        //Assert(fDelivered);
    49804980        if (fDelivered)
    49814981        {
     
    49974997        }
    49984998        else
    4999         {
    5000             Assert(FALSE);
    50014999            *aCanShow = TRUE;
    5002         }
    50035000    }
    50045001    else
     
    50275024            ++it;
    50285025        }
    5029 #if 1
    50305026        evDesc.init(mEventSource, VBoxEventType_OnShowWindow, UINT64_C(0));
    5031         ComPtr<IEvent> aEvent;
    5032         evDesc.getEvent(aEvent.asOutParam());
    5033         ComPtr<IShowWindowEvent> aShowEvent = aEvent;
    5034 
    5035         BOOL fDelivered = evDesc.fire(10000); /* Wait up to 10 secs for delivery */
    5036         Assert(fDelivered);
     5027        BOOL fDelivered = evDesc.fire(5000); /* Wait up to 5 secs for delivery */
     5028        //Assert(fDelivered);
    50375029        if (fDelivered)
    50385030        {
     5031            ComPtr<IEvent> aEvent;
     5032            evDesc.getEvent(aEvent.asOutParam());
     5033            ComPtr<IShowWindowEvent> aShowEvent = aEvent;
    50395034            ULONG64 aEvWinId = 0;
    50405035            if (aShowEvent)
    50415036            {
    50425037                aShowEvent->COMGETTER(WinId)(&aEvWinId);
    5043                 if (aEvWinId != 0)
     5038                if ((aEvWinId != 0) && (*aWinId == 0))
    50445039                    *aWinId = aEvWinId;
    50455040            }
     
    50475042                Assert(FALSE);
    50485043        }
    5049         else
    5050             Assert(FALSE);
    5051  #endif
    50525044    }
    50535045
  • trunk/src/VBox/Main/EventImpl.cpp

    r30559 r30591  
    357357        return mActive;
    358358    }
     359
     360    friend class EventSource;
    359361};
    360362
     
    736738             */
    737739            cbRc = record.obj()->process(aEvent, aWaitable, pit, alock);
    738             // what to do with cbRc?
     740
     741            if (FAILED_DEAD_INTERFACE(cbRc))
     742            {
     743                AutoWriteLock awlock(this COMMA_LOCKVAL_SRC_POS);
     744                Listeners::iterator lit = m->mListeners.find(record.obj()->mListener);
     745                if (lit != m->mListeners.end())
     746                    m->mListeners.erase(lit);
     747            }
     748            // anything else to do with cbRc?
    739749        }
    740750    } while (0);
  • trunk/src/VBox/Main/VirtualBoxImpl.cpp

    r30565 r30591  
    27522752    VBoxEventDesc evDesc;
    27532753    evDesc.init(m->pEventSource, VBoxEventType_OnExtraDataCanChange, id.raw(), aKey, aValue);
    2754     BOOL fDelivered = evDesc.fire(10000); /* Wait up to 10 secs for delivery */
    2755     Assert(fDelivered);
     2754    BOOL fDelivered = evDesc.fire(3000); /* Wait up to 3 secs for delivery */
     2755    //Assert(fDelivered);
    27562756    if (fDelivered)
    27572757    {
  • trunk/src/VBox/Main/glue/tests/TestVBox.java

    r30424 r30591  
    207207    }
    208208
    209     static void testEvents(VirtualBoxManager mgr, IEventSource es)
    210     {
    211         IEventListener listener = es.createListener();
     209    static class EventHandler
     210    {
     211        EventHandler() {}
     212        public void handleEvent(IEvent ev)
     213        {
     214            try {
     215                processEvent(ev);
     216            } catch (Throwable t) {
     217                t.printStackTrace();
     218            }
     219        }
     220    }
     221
     222    static void testEvents(VirtualBoxManager mgr, IEventSource es, boolean active)
     223    {
     224        // active mode for Java doesn't fully work yet, and using passive
     225        // is more portable (the only mode for MSCOM and WS) and thus generally
     226        // recommended
     227        IEventListener listener = active ? mgr.createListener(new EventHandler()) : es.createListener();
    212228
    213229        es.registerListener(listener, Arrays.asList(VBoxEventType.Any), false);
     
    216232            for (int i=0; i<100; i++)
    217233            {
    218                 IEvent ev = es.getEvent(listener, 1000);
    219234                System.out.print(".");
    220                 if (ev != null)
     235                if (active)
    221236                {
    222                     processEvent(ev);
    223                     es.eventProcessed(listener, ev);
     237                    mgr.waitForEvents(500);
     238                }
     239                else
     240                {
     241                    IEvent ev = es.getEvent(listener, 1000);
     242                    if (ev != null)
     243                    {
     244                        processEvent(ev);
     245                        es.eventProcessed(listener, ev);
     246                    }
    224247                }
    225248            }
     
    263286            testStart(mgr, vbox);
    264287            //testCallbacks(mgr, vbox);
    265             testEvents(mgr, vbox.getEventSource());
     288            testEvents(mgr, vbox.getEventSource(), false);
    266289
    267290            System.out.println("done, press Enter...");
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette