Updating branch refs/heads/master to 6728aaa9202732026dfd5ccf586fa354619a2476 (commit) from e00256f810a195e6ce79dcce4e7a4c26d2083fa9 (commit)
commit 6728aaa9202732026dfd5ccf586fa354619a2476 Author: Sean Davis <smd.seanda...@gmail.com> Date: Tue Aug 20 20:29:16 2013 -0400 Fix parole background image data/interfaces/parole.ui | 29 +++++++++- src/gst/parole-gst.c | 132 +++------------------------------------------ src/parole-player.c | 113 ++++++++++---------------------------- 3 files changed, 62 insertions(+), 212 deletions(-) diff --git a/data/interfaces/parole.ui b/data/interfaces/parole.ui index 9b3c389..c9c97ef 100644 --- a/data/interfaces/parole.ui +++ b/data/interfaces/parole.ui @@ -456,8 +456,8 @@ <property name="use_underline">True</property> <property name="image">image3</property> <property name="use_stock">False</property> - <accelerator key="plus" signal="activate"/> <accelerator key="equal" signal="activate"/> + <accelerator key="plus" signal="activate"/> <signal name="activate" handler="parole_player_volume_up" swapped="no"/> </object> </child> @@ -555,8 +555,8 @@ <property name="can_focus">False</property> <child> <object class="GtkBox" id="video_output"> - <property name="visible">True</property> <property name="can_focus">False</property> + <property name="no_show_all">True</property> <property name="orientation">vertical</property> <child> <placeholder/> @@ -655,6 +655,31 @@ <property name="position">1</property> </packing> </child> + <child> + <object class="GtkScrolledWindow" id="logo_window"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkViewport" id="viewport1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkImage" id="logo"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-missing-image</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> </child> </object> diff --git a/src/gst/parole-gst.c b/src/gst/parole-gst.c index ad63ac3..5b1baa6 100644 --- a/src/gst/parole-gst.c +++ b/src/gst/parole-gst.c @@ -450,105 +450,6 @@ parole_gst_size_allocate (GtkWidget *widget, GtkAllocation *allocation) } static void -parole_gst_draw_logo (ParoleGst *gst) -{ - static GdkPixbuf *pix = NULL; -#if GTK_CHECK_VERSION(3, 0, 0) - cairo_region_t *region; - GdkRGBA *color; - cairo_t *cr; -#else - GdkRegion *region; -#endif - GdkRectangle rect; - GtkWidget *widget; - GtkAllocation *allocation = g_new0 (GtkAllocation, 1); - - widget = GTK_WIDGET (gst); - - if ( !gtk_widget_get_window(widget) ) - return; - - rect.x = 0; - rect.y = 0; - - gtk_widget_get_allocation(widget, allocation); - rect.width = allocation->width; - rect.height = allocation->height; - -#if GTK_CHECK_VERSION(3, 0, 0) - region = cairo_region_create_rectangle(&rect); -#else - region = gdk_region_rectangle (&rect); -#endif - - gdk_window_begin_paint_region (gtk_widget_get_window(widget), - region); - -#if GTK_CHECK_VERSION(3, 0, 0) - cairo_region_destroy (region); - - GdkWindow *window; - cairo_surface_t *target; - - window = gtk_widget_get_window (widget); - target = cairo_get_group_target (cr); - - /* Clear to parent-relative pixmap - * We need to use direct X access here because GDK doesn't know about - * the parent relative pixmap. */ - cairo_surface_flush (target); - - XClearArea (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - 0, 0, - allocation->width, allocation->height, - False); - cairo_surface_mark_dirty_rectangle (target, - 0, 0, - allocation->width, allocation->height); -#else - gdk_region_destroy (region); - - gdk_window_clear_area (gtk_widget_get_window(widget), - 0, 0, - allocation->width, - allocation->height); -#endif - - if (gst->priv->scale_logo) - { - if (pix) - g_object_unref (pix); - pix = gdk_pixbuf_scale_simple (gst->priv->logo, - allocation->width, - allocation->height, - GDK_INTERP_BILINEAR); - gst->priv->scale_logo = FALSE; - } - -#if GTK_CHECK_VERSION(3, 0, 0) - cr = gdk_cairo_create (gtk_widget_get_window(widget)); - gdk_cairo_set_source_pixbuf (cr, pix, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); -#else - gdk_draw_pixbuf (GDK_DRAWABLE (gtk_widget_get_window(widget)), - gtk_widget_get_style(widget)->fg_gc[0], - pix, - 0, 0, 0, 0, - allocation->width, - allocation->height, - GDK_RGB_DITHER_NONE, - 0, 0); -#endif - - gdk_window_end_paint (gtk_widget_get_window(GTK_WIDGET (gst))); - - g_free(allocation); -} - -static void parole_gst_set_video_color_balance (ParoleGst *gst) { GstElement *video_sink; @@ -613,14 +514,18 @@ parole_gst_set_video_overlay (ParoleGst *gst) } static gboolean +#if GTK_CHECK_VERSION(3, 0, 0) +parole_gst_expose_event (GtkWidget *widget, cairo_t *cr) +#else parole_gst_expose_event (GtkWidget *widget, GdkEventExpose *ev) +#endif { ParoleGst *gst; gboolean playing_video; - if ( ev && ev->count > 0 ) - return TRUE; + //if ( ev && ev->count > 0 ) + //return TRUE; gst = PAROLE_GST (widget); @@ -643,8 +548,6 @@ parole_gst_expose_event (GtkWidget *widget, GdkEventExpose *ev) gst_x_overlay_expose (GST_X_OVERLAY (gst->priv->video_sink)); #endif } - else - parole_gst_draw_logo (gst); break; case GST_STATE_PAUSED: if ( playing_video || gst->priv->vis_loaded || gst->priv->target == GST_STATE_PLAYING ) @@ -653,13 +556,9 @@ parole_gst_expose_event (GtkWidget *widget, GdkEventExpose *ev) #else gst_x_overlay_expose (GST_X_OVERLAY (gst->priv->video_sink)); #endif - else - parole_gst_draw_logo (gst); break; case GST_STATE_READY: - if (gst->priv->target != GST_STATE_PLAYING) - parole_gst_draw_logo (gst); - else + if (!(gst->priv->target != GST_STATE_PLAYING)) #if GST_CHECK_VERSION(1, 0, 0) gst_video_overlay_expose (GST_VIDEO_OVERLAY (gst->priv->video_sink)); #else @@ -668,24 +567,12 @@ parole_gst_expose_event (GtkWidget *widget, GdkEventExpose *ev) break; case GST_STATE_NULL: case GST_STATE_VOID_PENDING: - parole_gst_draw_logo (gst); break; } return TRUE; } static void -parole_gst_load_logo (ParoleGst *gst) -{ - gchar *path; - - path = g_strdup_printf ("%s/parole.png", PIXMAPS_DIR); - - gst->priv->logo = gdk_pixbuf_new_from_file (path, NULL); - g_free (path); -} - -static void parole_gst_query_capabilities (ParoleGst *gst) { GstQuery *query; @@ -1126,7 +1013,6 @@ parole_gst_evaluate_state (ParoleGst *gst, GstState old, GstState new, GstState gtk_widget_get_allocation( GTK_WIDGET (gst), allocation ); parole_gst_size_allocate (GTK_WIDGET (gst), allocation); g_free(allocation); - parole_gst_draw_logo (gst); } break; } @@ -2390,7 +2276,6 @@ parole_gst_constructed (GObject *object) parole_gst_update_vis (gst); - parole_gst_load_logo (gst); parole_gst_set_subtitle_encoding (gst); parole_gst_set_subtitle_font (gst); @@ -2407,7 +2292,6 @@ parole_gst_style_set (GtkWidget *widget, GtkStyle *prev_style) if ( gst->priv->logo ) g_object_unref (gst->priv->logo); - parole_gst_load_logo (gst); gtk_widget_queue_draw (widget); } @@ -2427,7 +2311,7 @@ parole_gst_class_init (ParoleGstClass *klass) widget_class->size_allocate = parole_gst_size_allocate; #if GTK_CHECK_VERSION(3, 0, 0) // FIXME: parole-gst.c:2429:24: warning: assignment from incompatible pointer type [enabled by default] - widget_class->draw = parole_gst_expose_event; + //widget_class->draw = parole_gst_expose_event; #else widget_class->expose_event = parole_gst_expose_event; #endif diff --git a/src/parole-player.c b/src/parole-player.c index c3c2d4f..5201203 100644 --- a/src/parole-player.c +++ b/src/parole-player.c @@ -333,6 +333,8 @@ struct ParolePlayerPrivate GtkWidget *fullscreen_button; GtkWidget *fullscreen_image; GdkPixbuf *logo; + GtkWidget *logo_image; + GtkWidget *logo_window; gboolean scale_logo; GtkWidget *hbox_infobar; @@ -895,6 +897,7 @@ parole_player_show_audiobox (ParolePlayer *player) { /* Only show the audiobox if we're sure there's no video playing and visualizations are disabled. */ + gtk_widget_hide(player->priv->logo_window); if (!gst_get_has_video ( PAROLE_GST(player->priv->gst) ) && !gst_get_has_vis ( PAROLE_GST(player->priv->gst) ) ) { @@ -904,7 +907,7 @@ parole_player_show_audiobox (ParolePlayer *player) else { gtk_widget_hide(player->priv->audiobox); - gtk_widget_show_all(player->priv->videobox); + gtk_widget_show(player->priv->videobox); } } @@ -1446,6 +1449,16 @@ parole_player_stopped (ParolePlayer *player) gtk_widget_set_sensitive (player->priv->play_pause, parole_media_list_is_selected_row (player->priv->list) || !parole_media_list_is_empty (player->priv->list)); + + gtk_window_set_title (GTK_WINDOW (player->priv->window), "Parole Media Player"); + + gtk_widget_hide(player->priv->videobox); + gtk_widget_hide(player->priv->audiobox); + gtk_widget_show_all(player->priv->logo_window); + + gchar dur_text[128]; + get_time_string (dur_text, 0); + gtk_label_set_text (GTK_LABEL (player->priv->label_duration), dur_text); parole_player_change_range_value (player, 0); gtk_widget_set_sensitive (player->priv->range, FALSE); @@ -2758,7 +2771,6 @@ parole_audiobox_expose_event (GtkWidget *w, GdkEventExpose *ev, ParolePlayer *pl void on_content_area_size_allocate (GtkWidget *widget, GtkAllocation *allocation, ParolePlayer *player) { - g_print("size allocate\n"); g_return_if_fail (allocation != NULL); gtk_widget_set_allocation(widget, allocation); @@ -2771,74 +2783,15 @@ on_content_area_size_allocate (GtkWidget *widget, GtkAllocation *allocation, Par } } -static void -parole_draw_logo (ParolePlayer *player) -{ - static GdkPixbuf *pix = NULL; -#if GTK_CHECK_VERSION(3, 0, 0) - cairo_region_t *region; - GdkRGBA *color; - cairo_t *cr; -#else - GdkRegion *region; -#endif - GdkRectangle rect; - GtkWidget *widget; +static gboolean +on_logo_draw (GtkWidget *widget, GdkEventExpose *ev, ParolePlayer *player) { + GtkWidget *parent; GtkAllocation *allocation = g_new0 (GtkAllocation, 1); - - widget = GTK_WIDGET (player->priv->eventbox_output); - - if ( !gtk_widget_get_window(widget) ) - return; - - rect.x = 0; - rect.y = 0; - - gtk_widget_get_allocation(widget, allocation); - rect.width = allocation->width; - rect.height = allocation->height; - -#if GTK_CHECK_VERSION(3, 0, 0) - region = cairo_region_create_rectangle(&rect); -#else - region = gdk_region_rectangle (&rect); -#endif - - gdk_window_begin_paint_region (gtk_widget_get_window(widget), - region); - -#if GTK_CHECK_VERSION(3, 0, 0) - cairo_region_destroy (region); - - GdkWindow *window; - cairo_surface_t *target; - - window = gtk_widget_get_window (widget); - - //target = cairo_get_group_target (cr); + static GdkPixbuf *pix = NULL; - /* Clear to parent-relative pixmap - * We need to use direct X access here because GDK doesn't know about - * the parent relative pixmap. */ - //cairo_surface_flush (target); - - XClearArea (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - 0, 0, - allocation->width, allocation->height, - False);/* - cairo_surface_mark_dirty_rectangle (target, - 0, 0, - allocation->width, allocation->height);*/ -#else - gdk_region_destroy (region); + parent = gtk_widget_get_parent(widget); + gtk_widget_get_allocation(parent, allocation); - gdk_window_clear_area (gtk_widget_get_window(widget), - 0, 0, - allocation->width, - allocation->height); -#endif - if (player->priv->scale_logo) { if (pix) @@ -2847,28 +2800,13 @@ parole_draw_logo (ParolePlayer *player) allocation->width, allocation->height, GDK_INTERP_BILINEAR); + gtk_image_set_from_pixbuf(GTK_IMAGE(player->priv->logo_image), pix); player->priv->scale_logo = FALSE; } -#if GTK_CHECK_VERSION(3, 0, 0) - cr = gdk_cairo_create (gtk_widget_get_window(widget)); - gdk_cairo_set_source_pixbuf (cr, pix, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); -#else - gdk_draw_pixbuf (GDK_DRAWABLE (gtk_widget_get_window(widget)), - gtk_widget_get_style(widget)->fg_gc[0], - pix, - 0, 0, 0, 0, - allocation->width, - allocation->height, - GDK_RGB_DITHER_NONE, - 0, 0); -#endif - - gdk_window_end_paint (gtk_widget_get_window(GTK_WIDGET (player->priv->eventbox_output))); - g_free(allocation); + + return FALSE; } gboolean @@ -2885,7 +2823,7 @@ parole_player_configure_event_cb (GtkWidget *widget, GdkEventConfigure *ev, Paro NULL); } - parole_draw_logo(player); + player->priv->scale_logo = TRUE; return FALSE; } @@ -3191,6 +3129,9 @@ parole_player_init (ParolePlayer *player) player->priv->fullscreen_image = GTK_WIDGET (gtk_builder_get_object (builder, "image_media_fullscreen")); player->priv->eventbox_output = GTK_WIDGET (gtk_builder_get_object (builder, "content_area")); player->priv->logo = gdk_pixbuf_new_from_file (g_strdup_printf ("%s/parole.png", PIXMAPS_DIR), NULL); + player->priv->logo_image = GTK_WIDGET (gtk_builder_get_object (builder, "logo")); + g_signal_connect(player->priv->logo_image, "draw", G_CALLBACK(on_logo_draw), player); + player->priv->logo_window = GTK_WIDGET (gtk_builder_get_object (builder, "logo_window")); hpaned = GTK_WIDGET (gtk_builder_get_object (builder, "hpaned")); gtk_widget_style_get (hpaned, "handle-size", &player->priv->handle_width, NULL); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits