Copy bit of code from src/bg.c to src/panel.c and discard src/bg.*.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 28 Nov 2014 21:42:57 +0000 (23:42 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 28 Nov 2014 21:53:59 +0000 (23:53 +0200)
Only code that is used in src/bg.c is retrieving background once and
there is no need to create object FbBg just for that purpose.
And some calls in that code are already implemented elsewhere.

ChangeLog
po/POTFILES.in
src/Makefile.am
src/configurator.c
src/main.c
src/misc.c
src/panel.c
src/plugin.c
src/private.h

index e9ccf4c..9f86674 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -81,6 +81,8 @@
 * Urgent window is now always visible on the taskbar irrelevant of the
     desktop number on which it appears, because urgent window requires
     user attention (patch from Andy Balaam).
+* Moved bit of code that is used out from src/bg.c and discarded src/bg.c
+    with src/bg.h from distro tarball.
 
 0.7.2
 -------------------------------------------------------------------------
index 659fbcd..bf5ab2a 100644 (file)
@@ -1,8 +1,5 @@
 [encoding: UTF-8]
-src/bg.c
 src/configurator.c
-src/dbg.c
-src/ev.c
 src/panel.c
 src/plugin.c
 src/gtk-run.c
index fbc3ad7..c5534bc 100644 (file)
@@ -23,7 +23,6 @@ pkglib_LTLIBRARIES = liblxpanel.la
 liblxpanel_la_CFLAGS = $(lxpanel_CFLAGS) $(KEYBINDER_CFLAGS)
 liblxpanel_la_SOURCES = \
        misc.c \
-       bg.c \
        configurator.c \
        dbg.c \
        ev.c \
@@ -72,7 +71,6 @@ lxpanelctl_SOURCES = lxpanelctl.c lxpanelctl.h
 lxpanelctl_LDADD = $(X11_LIBS)
 
 EXTRA_DIST = \
-       bg.h \
        dbg.h \
        ev.h \
        menu-policy.h \
index ac3a203..ac0bba9 100644 (file)
@@ -25,7 +25,6 @@
 
 #include "private.h"
 #include "misc.h"
-#include "bg.h"
 #include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
index 78aea00..dd9d070 100644 (file)
@@ -36,7 +36,6 @@
 
 #include "private.h"
 #include "misc.h"
-#include "bg.h"
 
 #include "lxpanelctl.h"
 #include "dbg.h"
index b6c8e90..b392694 100644 (file)
@@ -547,7 +547,7 @@ get_xaproperty (Window win, Atom prop, Atom type, int *nitems)
     prop_data = NULL;
     if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), win, prop, 0, G_MAXLONG, False,
               type, &type_ret, &format_ret, &items_ret,
-              &after_ret, &prop_data) != Success)
+              &after_ret, &prop_data) != Success || items_ret == 0)
     {
         if( G_UNLIKELY(prop_data) )
             XFree( prop_data );
index aa3b78c..fd4524d 100644 (file)
@@ -36,7 +36,6 @@
 
 #include "private.h"
 #include "misc.h"
-#include "bg.h"
 
 #include "lxpanelctl.h"
 #include "dbg.h"
@@ -596,6 +595,46 @@ void _panel_set_wm_strut(LXPanel *panel)
  *         panel's handlers for GTK events          *
  ****************************************************/
 
+static void paint_root_pixmap(LXPanel *panel, cairo_t *cr)
+{
+    /*
+     * this code was extracted from code for FbBg object
+     *
+     * Copyright (C) 2001, 2002 Ian McKellar <yakk@yakk.net>
+     *                     2002 Sun Microsystems, Inc.
+     */
+    XGCValues gcv;
+    uint mask;
+    Window xroot;
+    GC gc;
+    Display *dpy;
+    Pixmap *prop;
+    GdkPixmap *pixmap;
+    Panel *p = panel->priv;
+
+    dpy = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
+    xroot = DefaultRootWindow(dpy);
+    gcv.ts_x_origin = 0;
+    gcv.ts_y_origin = 0;
+    gcv.fill_style = FillTiled;
+    mask = GCTileStipXOrigin | GCTileStipYOrigin | GCFillStyle;
+    prop = get_xaproperty(xroot, a_XROOTPMAP_ID, XA_PIXMAP, NULL);
+    if (prop)
+    {
+        gcv.tile = *prop;
+        mask |= GCTile;
+        XFree(prop);
+    }
+    gc = XCreateGC(dpy, xroot, mask, &gcv);
+    pixmap = gdk_pixmap_new(gtk_widget_get_window(GTK_WIDGET(panel)),
+                            p->aw, p->ah, -1);
+    XSetTSOrigin(dpy, gc, -p->ax, -p->ay);
+    XFillRectangle(dpy, gdk_x11_drawable_get_xid(pixmap), gc, 0, 0, p->aw, p->ah);
+    XFreeGC(dpy, gc);
+    gdk_cairo_set_source_pixmap(cr, pixmap, 0, 0);
+    cairo_paint(cr);
+    g_object_unref(pixmap);
+}
 
 void panel_determine_background_pixmap(Panel * panel, GtkWidget * widget, GdkWindow * window)
 {
@@ -629,14 +668,8 @@ void _panel_determine_background_pixmap(LXPanel * panel, GtkWidget * widget)
         if ((p->transparent && p->alpha != 255) || /* ignore it for opaque panel */
             (pixbuf != NULL && gdk_pixbuf_get_has_alpha(pixbuf)))
         {
-            /* we don't need to keep it since we get it once */
-            FbBg *bg = fb_bg_get_for_display();
             /* Transparent.  Determine the appropriate value from the root pixmap. */
-            pixmap = fb_bg_get_xroot_pix_for_win(bg, widget);
-            gdk_cairo_set_source_pixmap(cr, pixmap, 0, 0);
-            cairo_paint(cr);
-            g_object_unref(pixmap);
-            g_object_unref(bg);
+            paint_root_pixmap(panel, cr);
         }
         if (pixbuf != NULL)
         {
index 9993a83..906dd94 100644 (file)
@@ -29,7 +29,6 @@
 #include <stdlib.h>
 
 #include "misc.h"
-#include "bg.h"
 
 #include <glib-object.h>
 #include <glib/gi18n.h>
index 331f1a5..4ffbb1a 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <gdk/gdk.h>
 
-#include "bg.h"
 #include "ev.h"
 
 #if !GLIB_CHECK_VERSION(2, 40, 0)
@@ -76,7 +75,7 @@ struct _Panel {
     GtkWidget *(*my_box_new) (gboolean, gint);
     GtkWidget *(*my_separator_new) ();
 
-    FbBg *bg; /* unused since 0.8.0 */
+    void *bg; /* unused since 0.8.0 */
     int alpha;
     guint32 tintcolor;
     guint32 fontcolor;