This is an automated email from the git hooks/post-receive script. eric pushed a commit to branch master in repository xfce/xfce4-session.
commit cb3edba5a23bbfacc2dc2fe0ad6b0a0ce7c628ee Author: Eric Koegel <[email protected]> Date: Sun Apr 24 11:19:51 2016 +0300 balou: fix drawing the preview in the settings dialog --- engines/balou/balou-theme.c | 22 +++++++++++++--------- engines/balou/balou-theme.h | 2 +- engines/balou/balou.c | 7 ++++++- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/engines/balou/balou-theme.c b/engines/balou/balou-theme.c index 5952cf7..9070d46 100644 --- a/engines/balou/balou-theme.c +++ b/engines/balou/balou-theme.c @@ -197,9 +197,10 @@ balou_theme_get_logo (const BalouTheme *theme, } + void balou_theme_draw_gradient (const BalouTheme *theme, - GdkWindow *root, + cairo_t *cr, GdkRectangle logobox, GdkRectangle textbox) { @@ -208,9 +209,6 @@ balou_theme_draw_gradient (const BalouTheme *theme, gint dgreen; gint dblue; gint i; - cairo_t *cr; - - cr = gdk_cairo_create (root); if (gdk_rgba_equal (&theme->bgcolor1, &theme->bgcolor2)) { @@ -248,8 +246,6 @@ balou_theme_draw_gradient (const BalouTheme *theme, cairo_fill(cr); } } - - cairo_destroy (cr); } @@ -266,6 +262,7 @@ balou_theme_generate_preview (const BalouTheme *theme, GdkPixbuf *pixbuf; GdkPixbuf *scaled; GdkWindow *root; + cairo_surface_t *surface; cairo_t *cr; gint pw, ph; @@ -292,7 +289,11 @@ balou_theme_generate_preview (const BalouTheme *theme, } root = gdk_screen_get_root_window (gdk_screen_get_default ()); - cr = gdk_cairo_create(root); + surface = gdk_window_create_similar_surface (root, + CAIRO_CONTENT_COLOR_ALPHA, + gdk_window_get_width (root), + gdk_window_get_height (root)); + cr = cairo_create(surface); logobox.x = 0; logobox.y = 0; @@ -300,7 +301,7 @@ balou_theme_generate_preview (const BalouTheme *theme, logobox.height = HEIGHT; textbox.x = 0; textbox.y = 0; - balou_theme_draw_gradient (theme, root, logobox, textbox); + balou_theme_draw_gradient (theme, cr, logobox, textbox); pixbuf = balou_theme_get_logo (theme, WIDTH, HEIGHT); if (pixbuf != NULL) @@ -314,11 +315,14 @@ balou_theme_generate_preview (const BalouTheme *theme, g_object_unref (G_OBJECT (pixbuf)); } - pixbuf = gdk_pixbuf_get_from_window (root, 0, 0, WIDTH, HEIGHT); + cairo_surface_flush (surface); + + pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, WIDTH, HEIGHT); scaled = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR); g_object_unref (pixbuf); cairo_destroy(cr); + cairo_surface_destroy (surface); /* store preview */ store_cached_preview (theme, scaled); diff --git a/engines/balou/balou-theme.h b/engines/balou/balou-theme.h index 91994d9..2cd5dca 100644 --- a/engines/balou/balou-theme.h +++ b/engines/balou/balou-theme.h @@ -42,7 +42,7 @@ GdkPixbuf *balou_theme_get_logo (const BalouTheme *theme, gint available_width, gint available_height); void balou_theme_draw_gradient (const BalouTheme *theme, - GdkWindow *root, + cairo_t *cr, GdkRectangle logobox, GdkRectangle textbox); GdkPixbuf *balou_theme_generate_preview (const BalouTheme *theme, diff --git a/engines/balou/balou.c b/engines/balou/balou.c index 211a584..9e85cb5 100644 --- a/engines/balou/balou.c +++ b/engines/balou/balou.c @@ -129,6 +129,7 @@ balou_init (Balou *balou, for (m = 0; m < nmonitors; ++m) { + cairo_t *window_cr; window = balou->windows + i; balou_window_init (window, screen, m, root, cursor); @@ -143,11 +144,15 @@ balou_init (Balou *balou, window->textbox.y += window->logobox.height; window->textbox.height -= window->logobox.height; + window_cr = gdk_cairo_create (window->window); + balou_theme_draw_gradient (balou->theme, - root, + window_cr, window->logobox, window->textbox); + cairo_destroy (window_cr); + if (mainscreen == screen && mainmonitor == m) balou->mainwin = window; -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list [email protected] https://mail.xfce.org/mailman/listinfo/xfce4-commits
