X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fpreview.c;h=4fb0d5bed1230598650c5c890d2478ad7634a8ef;hb=4b72a63eb61a01275493c4bfb51ba02152d1c5e1;hp=4ed717bb1d56834e7ccec3413b76cd5f51b3bc9f;hpb=2c55a7172bfed971b7255f93323950d23ab775cf;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/preview.c b/gtk/src/preview.c index 4ed717bb..4fb0d5be 100644 --- a/gtk/src/preview.c +++ b/gtk/src/preview.c @@ -164,17 +164,36 @@ ghb_preview_init(signal_user_data_t *ud) GstBus *bus; GstElement *xover; +#if GTK_CHECK_VERSION(2,18,0) + if (!gdk_window_ensure_native(ud->preview->view->window)) + { + g_message("Couldn't create native window for GstXOverlay. Disabling live preview."); + GtkWidget *widget = GHB_WIDGET(ud->builder, "live_preview_box"); + gtk_widget_hide (widget); + widget = GHB_WIDGET(ud->builder, "live_preview_duration_box"); + gtk_widget_hide (widget); + return; + } +#endif + #if !defined(_WIN32) ud->preview->xid = GDK_DRAWABLE_XID(ud->preview->view->window); #else ud->preview->xid = GDK_WINDOW_HWND(ud->preview->view->window); #endif ud->preview->play = gst_element_factory_make("playbin", "play"); - //xover = gst_element_factory_make("xvimagesink", "xover"); - //xover = gst_element_factory_make("ximagesink", "xover"); xover = gst_element_factory_make("gconfvideosink", "xover"); + if (xover == NULL) + { + xover = gst_element_factory_make("xvimagesink", "xover"); + } + if (xover == NULL) + { + xover = gst_element_factory_make("ximagesink", "xover"); + } if (ud->preview->play == NULL || xover == NULL) { + g_message("Couldn't initialize gstreamer. Disabling live preview."); GtkWidget *widget = GHB_WIDGET(ud->builder, "live_preview_box"); gtk_widget_hide (widget); widget = GHB_WIDGET(ud->builder, "live_preview_duration_box");