Hi,<br><br>Just to share (or have some suggestions) a way to avoid flickering when resizing or obscuring a window used through the gstxoverlay interface:<br><br>------------------------------------------------------------------------------------------<br>
<br>//the first 3 lines turn off the &quot;automatically redraw background&quot;<br><span style="color: rgb(51, 51, 255);">gtk_widget_realize(area);</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">gdk_window_set_back_pixmap(area-&gt;window, NULL, FALSE);</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">gtk_widget_set_app_paintable(area,TRUE); </span><br><br>//The previous lines avoid flickering, but if we have a double buffer<br>//the problem is now due to the fact that the gstxoverlay interface give the XID<br>
//of&nbsp; the &quot;front buffer&quot;. (&lt;- not exactly true but to make me understood)<br>//So when swaping buffers, there is this <b style="color: rgb(153, 0, 0);"><u>ugly</u></b> flickering effect too.<br><span style="color: rgb(51, 51, 255);">gtk_widget_set_double_buffered(area, FALSE);</span><br>
//To keep double buffered, we should have to draw in the backbuffer<br>//but I do no know if there is a XID (HWND) for the backfuffer <br>//Yes I know there is only one XID (nothing to deal with front and back buffers)<br>
//So I do not know a way to do that :P<br><br>------------------------------------------------------------------------------------------<br><br><span style="color: rgb(51, 51, 255);">static GstBusSyncReply create_window (GstBus* bus, GstMessage* message, GtkWidget* widget)</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">{</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; // ignore anything but &#39;prepare-xwindow-id&#39; element messages</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GST_BUS_PASS;</span><br style="color: rgb(51, 51, 255);">
<br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; if (!gst_structure_has_name (message-&gt;structure, &quot;prepare-xwindow-id&quot;))</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GST_BUS_PASS;</span><br style="color: rgb(51, 51, 255);">
<br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; g_print (&quot;setting xwindow id\n&quot;);</span><br style="color: rgb(51, 51, 255);"><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">#ifdef WIN32</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reinterpret_cast&lt;gulong&gt;GDK_WINDOW_HWND(widget-&gt;window));</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">#else</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GDK_WINDOW_XWINDOW(widget-&gt;window));</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">#endif</span><br style="color: rgb(51, 51, 255);"><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; gst_message_unref (message);</span><br style="color: rgb(51, 51, 255);"><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp; return GST_BUS_DROP;</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">}</span><br><br>------------------------------------------------------------------------------------------<br><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">static gboolean expose_cb(GtkWidget* widget, GdkEventExpose* event, GstElement* videosink)</span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);">{</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp;&nbsp; gst_x_overlay_expose (GST_X_OVERLAY (videosink));</span><br style="color: rgb(51, 51, 255);">
<br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">&nbsp;&nbsp;&nbsp;&nbsp; return FALSE;</span><br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);">}</span><br><br>------------------------------------------------------------------------------------------<br>
<br>(for information, with Qt the equivalent is widget-&gt;setAttribute(Qt::WA_NoSystemBackground); )<br><br>Sincerely <br><br>J.<br>