<p class="MsoNormal">Hi everybody,</p>

<p class="MsoNormal">&nbsp;</p>

<p class="MsoNormal">I am writing an application where the user should be able to
draw (with the mouse) a rectangle on a playing video window (for now it is an
ximagesink).</p>

<p class="MsoNormal">&nbsp;</p>

<p class="MsoNormal">I try the following but I see nothing drawing on the screen…</p>

<p class="MsoNormal">### CONFIGURE PIPELINE TO CATCH SYNC MESSAGES</p>

<p class="MsoPlainText" style="margin-left: 0.5in;">bus = self.Pipeline.get_bus()</p>

<p class="MsoPlainText" style="margin-left: 0.5in;">bus.add_signal_watch()</p>

<p class="MsoPlainText" style="margin-left: 0.5in;">bus.enable_sync_message_emission()</p>

<p class="MsoPlainText" style="margin-left: 0.5in;">bus.connect(&#39;message&#39;,
self.on_message)</p>

<p class="MsoPlainText" style="margin-left: 0.5in;">bus.connect(&#39;sync-message::element&#39;,
self.on_sync_message)</p>

<p class="MsoNormal" style="text-indent: 0.5in;">&nbsp;</p>

<p class="MsoNormal" style="text-indent: 0.5in;">&nbsp;</p>

<p class="MsoNormal" style="text-indent: 0.5in;">#############</p>

<p class="MsoNormal" style="text-indent: 0.5in;">## Tell ximagesink to draw into the
draw area that I give it, not in it's own …</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; def on_sync_message(self, bus, message):</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; &nbsp; if message.structure is None:</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; &nbsp; message_name =
message.structure.get_name()</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; &nbsp; if message_name ==
&quot;prepare-xwindow-id&quot;:</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imagesink = message.src</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imagesink.set_property(&quot;force-aspect-ratio&quot;, True)</p>

<p class="MsoPlainText">&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imagesink.set_xwindow_id(self.DrawingArea.window.xid)</p>

<p class="MsoNormal" style="text-indent: 0.5in;">&nbsp;</p>

<p class="MsoNormal" style="text-indent: 0.5in;">#############</p>

<p class="MsoNormal" style="text-indent: 0.5in;">## Now, on the expose event of the
drawing area, paint the rectangle according to user input (mouse)</p>

<p class="MsoNormal" style="text-indent: 0.5in;">#############</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; def
on_DrawingAreaCamera_expose_event(self,widget,event):</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #if
self.area_selection_now is True:</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; context =
widget.window.cairo_create()</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
#widget.window.draw(context)</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
context.rectangle(self.area_selection)</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
context.set_source_rgb(1,0,0)</p>

<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
context.stroke()</p>

<p class="MsoNormal">&nbsp;</p>

<p class="MsoNormal">&nbsp;</p>

<p class="MsoNormal">What is the right way to interact with ximagesink, so I can
also draw things on it's drawable??</p>

<p class="MsoNormal">&nbsp;</p>

<p class="MsoNormal">Regards</p>