Updating branch refs/heads/0.6.x
         to cf8c5aded86146c98266e04db982933ff9dd6373 (commit)
       from 492cf84ee4cbf44dc760d48ed4df999fc4e49a92 (commit)

commit cf8c5aded86146c98266e04db982933ff9dd6373
Author: Andre Ellguth <an...@ellguth.com>
Date:   Fri Oct 18 19:35:30 2013 +0200

    Fixed some bugs detected with valgrind.
    Some dockapp detection changes.

 panel-plugin/catchwindow.c |   13 +++++++++----
 panel-plugin/dockapp.c     |   13 +++++++++----
 panel-plugin/misc.c        |    4 +++-
 panel-plugin/rcfile.c      |    5 +++--
 panel-plugin/wmdock.c      |    3 +--
 5 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c
index 431aec3..2a40200 100644
--- a/panel-plugin/catchwindow.c
+++ b/panel-plugin/catchwindow.c
@@ -114,11 +114,12 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w)
        h = XGetWMHints(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()),
                        wnck_window_get_xid(w));
 
-       if(!h) return;
+       if(!h)
+               return;
 
        if(h->initial_state == WithdrawnState ||
-                       h->flags == (WindowGroupHint | StateHint | 
IconWindowHint)
-                       || has_dockapp_hint(w)) {
+                       h->flags == (WindowGroupHint | StateHint | 
IconWindowHint) ||
+                       has_dockapp_hint(w) == TRUE) {
 
                debug("catchwindow.c: new wmapp open");
                debug("catchwindow.c: New dockapp %s with xid: 0x%x pid: %u 
arrived sessid: %s",
@@ -149,9 +150,11 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w)
                }
 
                if(h->initial_state == WithdrawnState && h->icon_window) {
+                       debug("catchwindow.c: Initial_state: %d with icon of 
window %s", h->initial_state, wnck_window_get_name(w));
                        
XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), 
wnck_window_get_xid(w));
                        dapp->i =h->icon_window;
                } else {
+                       debug("catchwindow.c: Initial_state: %d %s of window 
%s", h->initial_state, h->icon_window ? "with icon" : "no icon", 
wnck_window_get_name(w));
                        dapp->i = wnck_window_get_xid(w);
                }
 
@@ -195,7 +198,9 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w)
                }
 
                /* Cleanly unmap the original window. */
-               XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), 
dapp->i);
+               /* TODO: Verify is XUnmapWindow always not required.
+                * XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), 
dapp->i);
+                */
 
                if(rcDapp == FALSE) {
                        dapp->tile = wmdock_create_tile_from_socket(dapp);
diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c
index c14ed46..230e7e6 100644
--- a/panel-plugin/dockapp.c
+++ b/panel-plugin/dockapp.c
@@ -119,6 +119,7 @@ static DockappNode *wmdock_get_snapable_dockapp(DockappNode 
*dapp, gint *gluepos
        if( ! IS_PANELOFF(wmdock) )
                return NULL;
 
+       posx = posy = gluex = gluey = 0;
        prim = (dapp == wmdock_get_primary_anchor_dockapp()) ? TRUE : FALSE;
 
        switch(wmdock->anchorPos) {
@@ -452,7 +453,7 @@ DockappNode *wmdock_get_primary_anchor_dockapp()
                                if(dapp2->glue[i] == dapp1)
                                        break;
                        }
-                       if(dapp2->glue[i] == dapp1)
+                       if(i < GLUE_MAX && dapp2->glue[i] == dapp1)
                                break;
 
                        dapps2 = g_list_next(dapps2);
@@ -569,8 +570,12 @@ gboolean wmdock_startup_dockapp(const gchar *cmd)
 
 void wmdock_destroy_dockapp(DockappNode *dapp)
 {
-       debug("dockapp.c: Destroy dockapp %s", dapp->name);
-       XDestroyWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i);
+       Display *display = NULL;
+
+       if(dapp && (display = GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()))) {
+               XDestroyWindow(display, dapp->i);
+               debug("dockapp.c: Destroy dockapp %s", dapp->name);
+       }
 }
 
 
@@ -932,7 +937,7 @@ void wmdock_set_autoposition_dockapp(DockappNode *dapp, 
DockappNode *prevDapp)
        /* Setup the position of the first dockapp. */
        panelx = panely = plugx = plugy = x = y = 0;
 
-       gtk_window_get_position(GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET 
(wmdock->plugin))), &panelx, &panely);
+       gtk_window_get_position (GTK_WINDOW (gtk_widget_get_toplevel 
(GTK_WIDGET (wmdock->plugin))), &panelx, &panely);
        gdk_window_get_position (GDK_WINDOW (GTK_WIDGET 
(wmdock->plugin)->window), &plugx, &plugy);
 
        for(i = 0; prevDapp && i < GLUE_MAX; i++) {
diff --git a/panel-plugin/misc.c b/panel-plugin/misc.c
index 998206f..f260f75 100644
--- a/panel-plugin/misc.c
+++ b/panel-plugin/misc.c
@@ -258,6 +258,7 @@ int wmdock_get_instance_count()
        if(!fp)
                return(-1);
 
+       memset(buf, '\0', BUF_MAX * sizeof(char));
        strncpy(username, (const char *) g_get_user_name(), BUF_MAX);
        while(!feof(fp)) {
                buf[0] = 0;
@@ -286,7 +287,8 @@ void wmdock_panel_draw_wmdock_icon (gboolean redraw)
        if(redraw == TRUE && wmdockIcon) {
                gtk_image_set_from_pixbuf (GTK_IMAGE(wmdockIcon), gdkPbIcon);
        } else {
-               if(wmdockIcon) gtk_widget_destroy(wmdockIcon);
+               if(wmdockIcon)
+                       gtk_widget_destroy(wmdockIcon);
 
                wmdockIcon = gtk_image_new_from_pixbuf (gdkPbIcon);
                gtk_box_pack_start(GTK_BOX(wmdock->box), 
GTK_WIDGET(wmdockIcon), FALSE, FALSE, 0);
diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c
index 1515777..d804fff 100644
--- a/panel-plugin/rcfile.c
+++ b/panel-plugin/rcfile.c
@@ -141,12 +141,13 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin)
                                }
                                g_strfreev(glueInfo);
                        }
-
-                       g_strfreev(glueList);
                }
 
                g_free(launched);
        } /* rcCmds != NULL */
+
+       if(glueList)
+               g_strfreev(glueList);
 }
 
 
diff --git a/panel-plugin/wmdock.c b/panel-plugin/wmdock.c
index b2b729c..509bc8a 100644
--- a/panel-plugin/wmdock.c
+++ b/panel-plugin/wmdock.c
@@ -56,8 +56,7 @@ GdkPixbuf    *gdkPbTileDefault = NULL;
 GdkPixbuf    *gdkPbIcon        = NULL;
 WmdockPlugin *wmdock           = NULL;
 gchar        **rcCmds          = NULL;
-/* TODO: Set panel off to FALSE. */
-gboolean     rcPanelOff        = TRUE;
+gboolean     rcPanelOff        = RCDEFAULT_PANELOFF;
 
 
 static void wmdock_orientation_changed (XfcePanelPlugin *plugin, 
GtkOrientation orientation, gpointer user_data)
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to