<div dir="ltr">Hi Klaus,<div><br></div><div>thanks for the response. Yeah the example seems very similar. The thing i was wondering about - the xpcom samples do stuff with the <span style="color:rgb(0,0,0);white-space:pre-wrap">nsIEventQueue,</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">which I only instantiate but do not poll in any way (there are so many sources involving this that I got confused). Should I be doing something -</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">like calling the EventLoop() method to actually make the events route? Since everything else apart the event callbacks (which I didn't need so far,</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">but now I need to know when the machine has been stopped) was working fine I just didn't care. But if running/polling this queue actually pumps</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">some internal event loop which in turn fires the callbacks that could be the thing I'm missing.</span></div><div class="gmail_extra"><br><div class="gmail_quote">2017-11-06 22:39 GMT+02:00 Klaus Espenlaub <span dir="ltr"><<a href="mailto:klaus.espenlaub@oracle.com" target="_blank">klaus.espenlaub@oracle.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Rūdolfs,<br>
<span class="gmail-"><br>
On 05.11.2017 17:05, Rūdolfs Bundulis wrote:<br>
> Hi,<br>
><br>
> I'm having issues adding an active event listener via the XPCOM api.<br>
> I've created a class from the template in the documentation:<br>
><br>
</span>[...]<br>
<span class="gmail-">><br>
> and put the NS_IMPL_ISUPPORTS1(<wbr>CVirtualBoxEventListener,<br>
> IEventListener) macro in my cpp file. But the HandleEvent method is<br>
> never called. I register the listener by getting the event source from<br>
> the console object like this (sorry for all the macros, that I have<br>
> for exception handling):<br>
><br>
</span>[...]<br>
<span class="gmail-">><br>
> No events are triggered but on shutdown the VBOX XPCOM runtime<br>
> actually releases the object so it seems that it is aware of it. With<br>
> active mode, is there anything else I should be calling? I looked up<br>
> some python examples which do call a python VBOX API method<br>
> waitForEvents. Is there something similar in the C++ XPCOM API?<br>
<br>
</span>Most python examples I'm aware of use passive event delivery, so aren't<br>
relevant when you've decided to go for active event delivery. Also the<br>
VirtualBox GUI is not a good example any more since it's been converted<br>
to passive event delivery a while ago (IIRC 5.0 still had the active<br>
variant), so let's go for one of the most simple places I could find,<br>
VBoxSDL:<br>
<a href="https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp" rel="noreferrer" target="_blank">https://www.virtualbox.org/<wbr>browser/vbox/trunk/src/VBox/<wbr>Frontends/VBoxSDL/VBoxSDL.cpp</a><br>
<br>
Still it uses templates (ListenerImpl<>)  and lots of magic wrappers to<br>
abstract over the differences between COM and XPCOM (which lots of<br>
people would like to use but so far we didn't manage to include in a<br>
sensible way in the SDK package), which needs way more apologies than<br>
your couple of comparably harmless macros for error checking. The<br>
ListenerImpl<> template is defined in<br>
<a href="https://www.virtualbox.org/browser/vbox/trunk/include/VBox/com/listeners.h" rel="noreferrer" target="_blank">https://www.virtualbox.org/<wbr>browser/vbox/trunk/include/<wbr>VBox/com/listeners.h</a><br>
and the rest (if you really need to know) in the same directory.<br>
<br>
The C bindings example would have both active and passive event delivery<br>
as compile-time option, but that's too low level I assume...<br>
<br>
Hope this gives enough inspiration to identify the problem - your code<br>
didn't look far off the track.<br>
<br>
Klaus<br>
<br>
______________________________<wbr>_________________<br>
vbox-dev mailing list<br>
<a href="mailto:vbox-dev@virtualbox.org">vbox-dev@virtualbox.org</a><br>
<a href="https://www.virtualbox.org/mailman/listinfo/vbox-dev" rel="noreferrer" target="_blank">https://www.virtualbox.org/<wbr>mailman/listinfo/vbox-dev</a><br>
</blockquote></div><br></div></div>