summaryrefslogtreecommitdiff
path: root/src/xfce-desktop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xfce-desktop.c')
-rw-r--r--src/xfce-desktop.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c
index bf00f2d7..149a833c 100644
--- a/src/xfce-desktop.c
+++ b/src/xfce-desktop.c
@@ -318,8 +318,6 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
XfceDesktop *desktop = XFCE_DESKTOP(user_data);
GdkPixmap *pmap = desktop->priv->bg_pixmap;
GdkScreen *gscreen = desktop->priv->gscreen;
- cairo_t *cr;
- GdkPixbuf *pix;
GdkRectangle rect;
GdkRegion *clip_region = NULL;
gint i, monitor = -1, current_workspace;
@@ -335,6 +333,7 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
current_workspace = xfce_desktop_get_current_workspace(desktop);
+ /* Find out which monitor the backdrop is on */
for(i = 0; i < xfce_desktop_get_n_monitors(desktop); i++) {
if(backdrop == xfce_workspace_get_backdrop(desktop->priv->workspaces[current_workspace], i)) {
monitor = i;
@@ -350,6 +349,7 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
if(xfce_desktop_get_n_monitors(desktop) > 1
&& xfce_workspace_get_xinerama_stretch(desktop->priv->workspaces[current_workspace])) {
+ /* Spanning screens */
GdkRectangle monitor_rect;
gdk_screen_get_monitor_geometry(gscreen, 0, &rect);
@@ -414,7 +414,9 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
if(rect.width != 0 && rect.height != 0) {
/* create/get the composited backdrop pixmap */
- pix = xfce_backdrop_get_pixbuf(backdrop);
+ GdkPixbuf *pix = xfce_backdrop_get_pixbuf(backdrop);
+ cairo_t *cr;
+
if(!pix)
return;
@@ -428,9 +430,6 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
}
cairo_paint(cr);
- g_object_unref(G_OBJECT(pix));
-
- cairo_destroy(cr);
/* tell gtk to redraw the repainted area */
gtk_widget_queue_draw_area(GTK_WIDGET(desktop), rect.x, rect.y,
@@ -442,6 +441,9 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
/* do this again so apps watching the root win notice the update */
set_real_root_window_pixmap(gscreen, pmap);
+
+ g_object_unref(G_OBJECT(pix));
+ cairo_destroy(cr);
}
if(clip_region != NULL)
@@ -453,7 +455,6 @@ screen_size_changed_cb(GdkScreen *gscreen, gpointer user_data)
{
XfceDesktop *desktop = user_data;
gint w, h, current_workspace;
- XfceBackdrop *current_backdrop;
TRACE("entering");
@@ -491,6 +492,7 @@ screen_size_changed_cb(GdkScreen *gscreen, gpointer user_data)
gint i;
for(i = 0; i < xfce_desktop_get_n_monitors(desktop); i++) {
+ XfceBackdrop *current_backdrop;
current_backdrop = xfce_workspace_get_backdrop(desktop->priv->workspaces[current_workspace], i);
backdrop_changed_cb(current_backdrop, desktop);
}