[Xfce4-commits] <xfce4-wmdock-plugin:master> Fixed some bugs detected with valgrind. Some dockapp detection changes.
Andre Ellguth
noreply at xfce.org
Mon Nov 4 13:36:39 CET 2013
Updating branch refs/heads/master
to cf8c5aded86146c98266e04db982933ff9dd6373 (commit)
from 492cf84ee4cbf44dc760d48ed4df999fc4e49a92 (commit)
commit cf8c5aded86146c98266e04db982933ff9dd6373
Author: Andre Ellguth <andre at 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)
More information about the Xfce4-commits
mailing list