source_width = gst_play_get_source_width (play);
source_height = gst_play_get_source_height (play);
- if (!fullscreen_active) {
- gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem1"));
- gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem2"));
- gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem3"));
- gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem4"));
- gtk_widget_hide (GTK_WIDGET (mplay->status));
-
- gdk_window_get_origin (gdk_window, &root_x, &root_y);
- gdk_window_get_geometry (gdk_window, &client_x, &client_y,
- &width, &height, NULL);
- gdk_window_move (gdk_window, -client_x, -client_y);
- gtk_widget_set_usize (video_widget, gdk_screen_width () + 1,
- gdk_screen_height () + 1);
-
- mplay->x = root_x - client_x;
- mplay->y = root_y - client_y;
- mplay->width = width;
- mplay->height = height;
-
- fullscreen_active = TRUE;
-
- mplay->fullscreen_connection_id = gtk_signal_connect (GTK_OBJECT (mplay->window), "key_press_event",
- (GtkSignalFunc) fullscreen_key_press_event, mplay);
- } else {
- gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem1"));
- gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem2"));
- gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem3"));
- gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem4"));
- gtk_widget_show (GTK_WIDGET (mplay->status));
- gtk_widget_queue_resize (glade_xml_get_widget (mplay->xml, "dock1"));
-
- gdk_window_move (gdk_window, mplay->x, mplay->y);
- gtk_widget_set_usize (video_widget, source_width,
- source_height);
-
- gtk_signal_disconnect (GTK_OBJECT (mplay->window), mplay->fullscreen_connection_id);
-
- fullscreen_active = FALSE;
+ if (source_width || source_height)
+ {
+ if (!fullscreen_active) {
+ gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem1"));
+ gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem2"));
+ gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem3"));
+ gtk_widget_hide (glade_xml_get_widget (mplay->xml, "dockitem4"));
+ gtk_widget_hide (GTK_WIDGET (mplay->status));
+
+ gdk_window_get_origin (gdk_window, &root_x, &root_y);
+ gdk_window_get_geometry (gdk_window, &client_x, &client_y,
+ &width, &height, NULL);
+ gdk_window_move (gdk_window, -client_x, -client_y);
+ gtk_widget_set_usize (video_widget, gdk_screen_width () + 1,
+ gdk_screen_height () + 1);
+
+ mplay->x = root_x - client_x;
+ mplay->y = root_y - client_y;
+ mplay->width = width;
+ mplay->height = height;
+
+ fullscreen_active = TRUE;
+
+ mplay->fullscreen_connection_id = gtk_signal_connect (GTK_OBJECT (mplay->window), "key_press_event",
+ (GtkSignalFunc) fullscreen_key_press_event, mplay);
+ } else {
+ gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem1"));
+ gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem2"));
+ gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem3"));
+ gtk_widget_show (glade_xml_get_widget (mplay->xml, "dockitem4"));
+ gtk_widget_show (GTK_WIDGET (mplay->status));
+ gtk_widget_queue_resize (glade_xml_get_widget (mplay->xml, "dock1"));
+
+ gdk_window_move (gdk_window, mplay->x, mplay->y);
+ gtk_widget_set_usize (video_widget, source_width,
+ source_height);
+
+ gtk_signal_disconnect (GTK_OBJECT (mplay->window), mplay->fullscreen_connection_id);
+
+ fullscreen_active = FALSE;
+ }
}
}
priv->bit_rate_element = NULL;
priv->media_time_element = NULL;
- priv->source_width = 100;
- priv->source_height = 100;
+ priv->source_width = 0;
+ priv->source_height = 0;
}
GstPlay *
if (priv->uri)
g_free (priv->uri);
-
+
/* see if it looks like an URI */
if ((uriloc = strstr (uri, ":/"))) {
- priv->src = gst_elementfactory_make ("gnomevfssrc", "srcelement");
-
- if (!priv->src) {
- if (strstr (uri, "file:/")) {
+ priv->src = gst_elementfactory_make ("gnomevfssrc", "srcelement");
+
+ if (!priv->src) {
+ if (strstr (uri, "file:/")) {
uri += strlen ("file:/");
- }
- else
- return GST_PLAY_CANNOT_PLAY;
- }
+ }
+ else
+ return GST_PLAY_CANNOT_PLAY;
+ }
}
-
+
if (priv->src == NULL) {
- priv->src = gst_elementfactory_make ("disksrc", "srcelement");
+ priv->src = gst_elementfactory_make ("disksrc", "srcelement");
}
-
+
priv->uri = g_strdup (uri);
-
+
//priv->src = gst_elementfactory_make ("dvdsrc", "disk_src");
priv->offset_element = priv->src;
g_return_val_if_fail (priv->src != NULL, GST_PLAY_CANNOT_PLAY);
-
+
gtk_object_set (G_OBJECT (priv->src), "location", priv->uri, NULL);
-
+
priv->cache = gst_elementfactory_make ("autoplugcache", "cache");
g_return_val_if_fail (priv->cache != NULL, GST_PLAY_CANNOT_PLAY);
-
+
gtk_signal_connect (GTK_OBJECT (priv->cache), "cache_empty",
- GTK_SIGNAL_FUNC (gst_play_cache_empty), play);
-
+ GTK_SIGNAL_FUNC (gst_play_cache_empty), play);
+
priv->typefind = gst_elementfactory_make ("typefind", "typefind");
g_return_val_if_fail (priv->typefind != NULL, GST_PLAY_CANNOT_PLAY);
gtk_signal_connect (GTK_OBJECT (priv->typefind), "have_type",
- GTK_SIGNAL_FUNC (gst_play_have_type), play);
-
-
+ GTK_SIGNAL_FUNC (gst_play_have_type), play);
+
+
gst_bin_add (GST_BIN (priv->pipeline), priv->src);
gst_bin_add (GST_BIN (priv->pipeline), priv->cache);
gst_bin_add (GST_BIN (priv->pipeline), priv->typefind);
-
+
gst_element_connect (priv->src, "src", priv->cache, "sink");
gst_element_connect (priv->cache, "src", priv->typefind, "sink");
-
+
return GST_PLAY_OK;
}
priv->video_widget = gtk_socket_new ();
gtk_container_add (GTK_CONTAINER (widget), priv->video_widget);
-
+
if (GTK_WIDGET_CLASS (parent_class)->realize) {
GTK_WIDGET_CLASS (parent_class)->realize (widget);
}