/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
/*
* preview.c
- * Copyright (C) John Stebbins 2008 <stebbins@stebbins>
+ * Copyright (C) John Stebbins 2008-2011 <stebbins@stebbins>
*
* preview.c is free software.
*
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");