void SetVisualOutput(GstPlaybackEngine *engine, GdkWindow* fullWindow) { g_return_if_fail(engine != NULL); g_return_if_fail(engine->playbin != NULL); g_return_if_fail(fullWindow != NULL); //Get a pointer to our video sink. GstElement *videosink; g_object_get(engine->playbin, "video-sink", &videosink, NULL); //Return if we couldn't get it. g_return_if_fail(videosink != NULL); gint attributesMask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; GdkWindowAttr attributes; attributes.x = 0; attributes.y = 0; attributes.width = 600; attributes.height = 400; attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; GdkWindow *newWin = gdk_window_new(fullWindow, &attributes, attributesMask); gdk_window_show(newWin); XID xid = GDK_WINDOW_XID(newWin); gst_x_overlay_set_xwindow_id((GstXOverlay *)videosink, xid); gst_object_unref(videosink); }