make ob_debug use the g_log system, and make openbox log messages to..a log file ! this will help everyone since most people do not run openbox in a terminal..

This commit is contained in:
Dana Jansens 2008-01-20 12:36:42 -05:00
parent 20b8fcfa33
commit a21840cbb7
13 changed files with 301 additions and 213 deletions

View file

@ -264,7 +264,7 @@ void client_manage(Window window)
XFree(wmhint); XFree(wmhint);
} }
ob_debug("Managing window: 0x%lx\n", window); ob_debug("Managing window: 0x%lx", window);
map_time = event_get_server_time(); map_time = event_get_server_time();
@ -288,8 +288,8 @@ void client_manage(Window window)
/* get all the stuff off the window */ /* get all the stuff off the window */
client_get_all(self, TRUE); client_get_all(self, TRUE);
ob_debug("Window type: %d\n", self->type); ob_debug("Window type: %d", self->type);
ob_debug("Window group: 0x%x\n", self->group?self->group->leader:0); ob_debug("Window group: 0x%x", self->group?self->group->leader:0);
/* now we have all of the window's information so we can set this up. /* now we have all of the window's information so we can set this up.
do this before creating the frame, so it can tell that we are still do this before creating the frame, so it can tell that we are still
@ -356,7 +356,7 @@ void client_manage(Window window)
/* figure out placement for the window if the window is new */ /* figure out placement for the window if the window is new */
if (ob_state() == OB_STATE_RUNNING) { if (ob_state() == OB_STATE_RUNNING) {
ob_debug("Positioned: %s @ %d %d\n", ob_debug("Positioned: %s @ %d %d",
(!self->positioned ? "no" : (!self->positioned ? "no" :
(self->positioned == PPosition ? "program specified" : (self->positioned == PPosition ? "program specified" :
(self->positioned == USPosition ? "user specified" : (self->positioned == USPosition ? "user specified" :
@ -364,7 +364,7 @@ void client_manage(Window window)
"program + user specified" : "program + user specified" :
"BADNESS !?")))), place.x, place.y); "BADNESS !?")))), place.x, place.y);
ob_debug("Sized: %s @ %d %d\n", ob_debug("Sized: %s @ %d %d",
(!self->sized ? "no" : (!self->sized ? "no" :
(self->sized == PSize ? "program specified" : (self->sized == PSize ? "program specified" :
(self->sized == USSize ? "user specified" : (self->sized == USSize ? "user specified" :
@ -436,7 +436,7 @@ void client_manage(Window window)
place.width = MIN(place.width, a->width); place.width = MIN(place.width, a->width);
place.height = MIN(place.height, a->height); place.height = MIN(place.height, a->height);
ob_debug("setting window size to %dx%d\n", place.width, place.height); ob_debug("setting window size to %dx%d", place.width, place.height);
/* get the size of the client back */ /* get the size of the client back */
place.width -= self->frame->size.left + self->frame->size.right; place.width -= self->frame->size.left + self->frame->size.right;
@ -446,11 +446,11 @@ void client_manage(Window window)
} }
ob_debug("placing window 0x%x at %d, %d with size %d x %d. " ob_debug("placing window 0x%x at %d, %d with size %d x %d. "
"some restrictions may apply\n", "some restrictions may apply",
self->window, place.x, place.y, place.width, place.height); self->window, place.x, place.y, place.width, place.height);
if (self->session) if (self->session)
ob_debug(" but session requested %d, %d %d x %d instead, " ob_debug(" but session requested %d, %d %d x %d instead, "
"overriding\n", "overriding",
self->session->x, self->session->y, self->session->x, self->session->y,
self->session->w, self->session->h); self->session->w, self->session->h);
@ -465,7 +465,7 @@ void client_manage(Window window)
g_free(monitor); g_free(monitor);
monitor = NULL; monitor = NULL;
ob_debug_type(OB_DEBUG_FOCUS, "Going to try activate new window? %s\n", ob_debug_type(OB_DEBUG_FOCUS, "Going to try activate new window? %s",
activate ? "yes" : "no"); activate ? "yes" : "no");
if (activate) { if (activate) {
gboolean raise = FALSE; gboolean raise = FALSE;
@ -473,7 +473,7 @@ void client_manage(Window window)
/* This is focus stealing prevention */ /* This is focus stealing prevention */
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Want to focus new window 0x%x at time %u " "Want to focus new window 0x%x at time %u "
"launched at %u (last user interaction time %u)\n", "launched at %u (last user interaction time %u)",
self->window, map_time, launch_time, self->window, map_time, launch_time,
event_last_user_time); event_last_user_time);
@ -483,7 +483,7 @@ void client_manage(Window window)
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because the user is inside " "Not focusing the window because the user is inside "
"an Openbox menu or is move/resizing a window and " "an Openbox menu or is move/resizing a window and "
"we don't want to interrupt them\n"); "we don't want to interrupt them");
} }
/* if it's on another desktop */ /* if it's on another desktop */
@ -497,7 +497,7 @@ void client_manage(Window window)
raise = TRUE; raise = TRUE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because its on another " "Not focusing the window because its on another "
"desktop\n"); "desktop");
} }
/* If something is focused, and it's not our relative... */ /* If something is focused, and it's not our relative... */
else if (focus_client && client_search_focus_tree_full(self) == NULL && else if (focus_client && client_search_focus_tree_full(self) == NULL &&
@ -514,14 +514,14 @@ void client_manage(Window window)
activate = FALSE; activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because the user is " "Not focusing the window because the user is "
"working in another window\n"); "working in another window");
} }
/* If its a transient (and its parents aren't focused) */ /* If its a transient (and its parents aren't focused) */
else if (client_has_parent(self)) { else if (client_has_parent(self)) {
activate = FALSE; activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because it is a " "Not focusing the window because it is a "
"transient, and its relatives aren't focused\n"); "transient, and its relatives aren't focused");
} }
/* Don't steal focus from globally active clients. /* Don't steal focus from globally active clients.
I stole this idea from KWin. It seems nice. I stole this idea from KWin. It seems nice.
@ -532,7 +532,7 @@ void client_manage(Window window)
activate = FALSE; activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because a globally " "Not focusing the window because a globally "
"active client has focus\n"); "active client has focus");
} }
/* Don't move focus if it's not going to go to this window /* Don't move focus if it's not going to go to this window
anyway */ anyway */
@ -541,7 +541,7 @@ void client_manage(Window window)
raise = TRUE; raise = TRUE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because another window " "Not focusing the window because another window "
"would get the focus anyway\n"); "would get the focus anyway");
} }
else if (!(self->desktop == screen_desktop || else if (!(self->desktop == screen_desktop ||
self->desktop == DESKTOP_ALL)) self->desktop == DESKTOP_ALL))
@ -557,7 +557,7 @@ void client_manage(Window window)
if (!activate) { if (!activate) {
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focus stealing prevention activated for %s at " "Focus stealing prevention activated for %s at "
"time %u (last user interactioon time %u)\n", "time %u (last user interactioon time %u)",
self->title, map_time, event_last_user_time); self->title, map_time, event_last_user_time);
/* if the client isn't focused, then hilite it so the user /* if the client isn't focused, then hilite it so the user
knows it is there */ knows it is there */
@ -623,7 +623,7 @@ void client_manage(Window window)
/* free the ObAppSettings shallow copy */ /* free the ObAppSettings shallow copy */
g_free(settings); g_free(settings);
ob_debug("Managed window 0x%lx plate 0x%x (%s)\n", ob_debug("Managed window 0x%lx plate 0x%x (%s)",
window, self->frame->window, self->class); window, self->frame->window, self->class);
return; return;
@ -635,7 +635,7 @@ ObClient *client_fake_manage(Window window)
ObClient *self; ObClient *self;
ObAppSettings *settings; ObAppSettings *settings;
ob_debug("Pretend-managing window: %lx\n", window); ob_debug("Pretend-managing window: %lx", window);
/* do this minimal stuff to figure out the client's decorations */ /* do this minimal stuff to figure out the client's decorations */
@ -653,7 +653,7 @@ ObClient *client_fake_manage(Window window)
self->frame = frame_new(self); self->frame = frame_new(self);
frame_adjust_area(self->frame, FALSE, TRUE, TRUE); frame_adjust_area(self->frame, FALSE, TRUE, TRUE);
ob_debug("gave extents left %d right %d top %d bottom %d\n", ob_debug("gave extents left %d right %d top %d bottom %d",
self->frame->size.left, self->frame->size.right, self->frame->size.left, self->frame->size.right,
self->frame->size.top, self->frame->size.bottom); self->frame->size.top, self->frame->size.bottom);
@ -675,7 +675,7 @@ void client_unmanage(ObClient *self)
GSList *it; GSList *it;
gulong ignore_start; gulong ignore_start;
ob_debug("Unmanaging window: 0x%x plate 0x%x (%s) (%s)\n", ob_debug("Unmanaging window: 0x%x plate 0x%x (%s) (%s)",
self->window, self->frame->window, self->window, self->frame->window,
self->class, self->title ? self->title : ""); self->class, self->title ? self->title : "");
@ -794,7 +794,7 @@ void client_unmanage(ObClient *self)
/* update the list hints */ /* update the list hints */
client_set_list(); client_set_list();
ob_debug("Unmanaged window 0x%lx\n", self->window); ob_debug("Unmanaged window 0x%lx", self->window);
/* free all data allocated in the client struct */ /* free all data allocated in the client struct */
g_slist_free(self->transients); g_slist_free(self->transients);
@ -852,7 +852,7 @@ static ObAppSettings *client_get_settings_state(ObClient *self)
match = FALSE; match = FALSE;
if (match) { if (match) {
ob_debug("Window matching: %s\n", app->name); ob_debug("Window matching: %s", app->name);
/* copy the settings to our struct, overriding the existing /* copy the settings to our struct, overriding the existing
settings if they are not defaults */ settings if they are not defaults */
@ -907,17 +907,17 @@ static void client_restore_session_state(ObClient *self)
GList *it; GList *it;
ob_debug_type(OB_DEBUG_SM, ob_debug_type(OB_DEBUG_SM,
"Restore session for client %s\n", self->title); "Restore session for client %s", self->title);
if (!(it = session_state_find(self))) { if (!(it = session_state_find(self))) {
ob_debug_type(OB_DEBUG_SM, ob_debug_type(OB_DEBUG_SM,
"Session data not found for client %s\n", self->title); "Session data not found for client %s", self->title);
return; return;
} }
self->session = it->data; self->session = it->data;
ob_debug_type(OB_DEBUG_SM, "Session data loaded for client %s\n", ob_debug_type(OB_DEBUG_SM, "Session data loaded for client %s",
self->title); self->title);
RECT_SET_POINT(self->area, self->session->x, self->session->y); RECT_SET_POINT(self->area, self->session->x, self->session->y);
@ -1170,7 +1170,7 @@ static void client_get_area(ObClient *self)
POINT_SET(self->root_pos, wattrib.x, wattrib.y); POINT_SET(self->root_pos, wattrib.x, wattrib.y);
self->border_width = wattrib.border_width; self->border_width = wattrib.border_width;
ob_debug("client area: %d %d %d %d bw %d\n", wattrib.x, wattrib.y, ob_debug("client area: %d %d %d %d bw %d", wattrib.x, wattrib.y,
wattrib.width, wattrib.height, wattrib.border_width); wattrib.width, wattrib.height, wattrib.border_width);
} }
@ -1183,7 +1183,7 @@ static void client_get_desktop(ObClient *self)
self->desktop = screen_num_desktops - 1; self->desktop = screen_num_desktops - 1;
else else
self->desktop = d; self->desktop = d;
ob_debug("client requested desktop 0x%x\n", self->desktop); ob_debug("client requested desktop 0x%x", self->desktop);
} else { } else {
GSList *it; GSList *it;
gboolean first = TRUE; gboolean first = TRUE;
@ -1206,7 +1206,7 @@ static void client_get_desktop(ObClient *self)
if (all != screen_num_desktops) { if (all != screen_num_desktops) {
self->desktop = all; self->desktop = all;
ob_debug("client desktop set from parents: 0x%x\n", ob_debug("client desktop set from parents: 0x%x",
self->desktop); self->desktop);
} }
/* try get from the startup-notification protocol */ /* try get from the startup-notification protocol */
@ -1214,13 +1214,13 @@ static void client_get_desktop(ObClient *self)
if (self->desktop >= screen_num_desktops && if (self->desktop >= screen_num_desktops &&
self->desktop != DESKTOP_ALL) self->desktop != DESKTOP_ALL)
self->desktop = screen_num_desktops - 1; self->desktop = screen_num_desktops - 1;
ob_debug("client desktop set from startup-notification: 0x%x\n", ob_debug("client desktop set from startup-notification: 0x%x",
self->desktop); self->desktop);
} }
/* defaults to the current desktop */ /* defaults to the current desktop */
else { else {
self->desktop = screen_desktop; self->desktop = screen_desktop;
ob_debug("client desktop set to the current desktop: %d\n", ob_debug("client desktop set to the current desktop: %d",
self->desktop); self->desktop);
} }
} }
@ -1575,7 +1575,7 @@ void client_update_colormap(ObClient *self, Colormap colormap)
{ {
if (colormap == self->colormap) return; if (colormap == self->colormap) return;
ob_debug("Setting client %s colormap: 0x%x\n", self->title, colormap); ob_debug("Setting client %s colormap: 0x%x", self->title, colormap);
if (client_focused(self)) { if (client_focused(self)) {
screen_install_colormap(self, FALSE); /* uninstall old one */ screen_install_colormap(self, FALSE); /* uninstall old one */
@ -1630,15 +1630,15 @@ void client_update_normal_hints(ObClient *self)
if (size.flags & PResizeInc && size.width_inc && size.height_inc) if (size.flags & PResizeInc && size.width_inc && size.height_inc)
SIZE_SET(self->size_inc, size.width_inc, size.height_inc); SIZE_SET(self->size_inc, size.width_inc, size.height_inc);
ob_debug("Normal hints: min size (%d %d) max size (%d %d)\n " ob_debug("Normal hints: min size (%d %d) max size (%d %d)",
"size inc (%d %d) base size (%d %d)\n",
self->min_size.width, self->min_size.height, self->min_size.width, self->min_size.height,
self->max_size.width, self->max_size.height, self->max_size.width, self->max_size.height);
ob_debug("size inc (%d %d) base size (%d %d)",
self->size_inc.width, self->size_inc.height, self->size_inc.width, self->size_inc.height,
self->base_size.width, self->base_size.height); self->base_size.width, self->base_size.height);
} }
else else
ob_debug("Normal hints: not set\n"); ob_debug("Normal hints: not set");
} }
void client_setup_decor_and_functions(ObClient *self, gboolean reconfig) void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
@ -2645,7 +2645,7 @@ static void client_apply_startup_state(ObClient *self,
pre-max/pre-fullscreen values pre-max/pre-fullscreen values
*/ */
client_try_configure(self, &x, &y, &w, &h, &l, &l, FALSE); client_try_configure(self, &x, &y, &w, &h, &l, &l, FALSE);
ob_debug("placed window 0x%x at %d, %d with size %d x %d\n", ob_debug("placed window 0x%x at %d, %d with size %d x %d",
self->window, x, y, w, h); self->window, x, y, w, h);
/* save the area, and make it where it should be for the premax stuff */ /* save the area, and make it where it should be for the premax stuff */
oldarea = self->area; oldarea = self->area;
@ -3025,7 +3025,7 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
event.xconfigure.event = self->window; event.xconfigure.event = self->window;
event.xconfigure.window = self->window; event.xconfigure.window = self->window;
ob_debug("Sending ConfigureNotify to %s for %d,%d %dx%d\n", ob_debug("Sending ConfigureNotify to %s for %d,%d %dx%d",
self->title, self->root_pos.x, self->root_pos.y, w, h); self->title, self->root_pos.x, self->root_pos.y, w, h);
/* root window real coords */ /* root window real coords */
@ -3094,7 +3094,7 @@ void client_fullscreen(ObClient *self, gboolean fs)
RECT_SET(self->pre_fullscreen_area, 0, 0, 0, 0); RECT_SET(self->pre_fullscreen_area, 0, 0, 0, 0);
} }
ob_debug("Window %s going fullscreen (%d)\n", ob_debug("Window %s going fullscreen (%d)",
self->title, self->fullscreen); self->title, self->fullscreen);
client_setup_decor_and_functions(self, FALSE); client_setup_decor_and_functions(self, FALSE);
@ -3120,7 +3120,7 @@ static void client_iconify_recursive(ObClient *self,
if (self->iconic != iconic) { if (self->iconic != iconic) {
ob_debug("%sconifying window: 0x%lx\n", (iconic ? "I" : "Uni"), ob_debug("%sconifying window: 0x%lx", (iconic ? "I" : "Uni"),
self->window); self->window);
if (iconic) { if (iconic) {
@ -3294,7 +3294,7 @@ void client_kill(ObClient *self)
if (!self->client_machine && self->pid) { if (!self->client_machine && self->pid) {
/* running on the local host */ /* running on the local host */
if (!self->close_tried_term) { if (!self->close_tried_term) {
ob_debug("killing window 0x%x with pid %lu, with SIGTERM\n", ob_debug("killing window 0x%x with pid %lu, with SIGTERM",
self->window, self->pid); self->window, self->pid);
kill(self->pid, SIGTERM); kill(self->pid, SIGTERM);
self->close_tried_term = TRUE; self->close_tried_term = TRUE;
@ -3303,7 +3303,7 @@ void client_kill(ObClient *self)
client_update_title(self); client_update_title(self);
} }
else { else {
ob_debug("killing window 0x%x with pid %lu, with SIGKILL\n", ob_debug("killing window 0x%x with pid %lu, with SIGKILL",
self->window, self->pid); self->window, self->pid);
kill(self->pid, SIGKILL); /* kill -9 */ kill(self->pid, SIGKILL); /* kill -9 */
} }
@ -3338,7 +3338,7 @@ static void client_set_desktop_recursive(ObClient *self,
if (target != self->desktop && self->type != OB_CLIENT_TYPE_DESKTOP) { if (target != self->desktop && self->type != OB_CLIENT_TYPE_DESKTOP) {
ob_debug("Setting desktop %u\n", target+1); ob_debug("Setting desktop %u", target+1);
g_assert(target < screen_num_desktops || target == DESKTOP_ALL); g_assert(target < screen_num_desktops || target == DESKTOP_ALL);
@ -3640,12 +3640,12 @@ gboolean client_focus(ObClient *self)
if (!client_can_focus(self)) { if (!client_can_focus(self)) {
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Client %s can't be focused\n", self->title); "Client %s can't be focused", self->title);
return FALSE; return FALSE;
} }
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focusing client \"%s\" (0x%x) at time %u\n", "Focusing client \"%s\" (0x%x) at time %u",
self->title, self->window, event_curtime); self->title, self->window, event_curtime);
/* if using focus_delay, stop the timer now so that focus doesn't /* if using focus_delay, stop the timer now so that focus doesn't
@ -3687,7 +3687,7 @@ gboolean client_focus(ObClient *self)
obt_display_ignore_errors(FALSE); obt_display_ignore_errors(FALSE);
ob_debug_type(OB_DEBUG_FOCUS, "Error focusing? %d\n", ob_debug_type(OB_DEBUG_FOCUS, "Error focusing? %d",
obt_display_error_occured); obt_display_error_occured);
return !obt_display_error_occured; return !obt_display_error_occured;
} }
@ -4014,15 +4014,15 @@ static void detect_edge(Rect area, ObDirection dir,
g_assert_not_reached(); g_assert_not_reached();
} }
ob_debug("my head %d size %d\n", my_head, my_size); ob_debug("my head %d size %d", my_head, my_size);
ob_debug("head %d tail %d deest %d\n", head, tail, *dest); ob_debug("head %d tail %d deest %d", head, tail, *dest);
if (!skip_head) { if (!skip_head) {
ob_debug("using near edge %d\n", head); ob_debug("using near edge %d", head);
*dest = head; *dest = head;
*near_edge = TRUE; *near_edge = TRUE;
} }
else if (!skip_tail) { else if (!skip_tail) {
ob_debug("using far edge %d\n", tail); ob_debug("using far edge %d", tail);
*dest = tail; *dest = tail;
*near_edge = FALSE; *near_edge = FALSE;
} }
@ -4087,7 +4087,7 @@ void client_find_edge_directional(ObClient *self, ObDirection dir,
cur->desktop != screen_desktop) cur->desktop != screen_desktop)
continue; continue;
ob_debug("trying window %s\n", cur->title); ob_debug("trying window %s", cur->title);
detect_edge(cur->frame->area, dir, my_head, my_size, my_edge_start, detect_edge(cur->frame->area, dir, my_head, my_size, my_edge_start,
my_edge_size, dest, near_edge); my_edge_size, dest, near_edge);
@ -4208,10 +4208,10 @@ void client_find_resize_directional(ObClient *self, ObDirection side,
g_assert_not_reached(); g_assert_not_reached();
} }
ob_debug("head %d dir %d\n", head, dir); ob_debug("head %d dir %d", head, dir);
client_find_edge_directional(self, dir, head, 1, client_find_edge_directional(self, dir, head, 1,
e_start, e_size, &e, &near); e_start, e_size, &e, &near);
ob_debug("edge %d\n", e); ob_debug("edge %d", e);
*x = self->frame->area.x; *x = self->frame->area.x;
*y = self->frame->area.y; *y = self->frame->area.y;
*w = self->frame->area.width; *w = self->frame->area.width;

View file

@ -17,62 +17,145 @@
*/ */
#include "debug.h" #include "debug.h"
#include "gettext.h"
#include "obt/paths.h"
#include <glib.h> #include <glib.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <errno.h>
static gboolean show; static gboolean enabled_types[OB_DEBUG_TYPE_NUM] = {FALSE};
static FILE *log_file = NULL;
static guint rr_handler_id = 0;
static guint obt_handler_id = 0;
static guint ob_handler_id = 0;
void ob_debug_show_output(gboolean enable) static void log_handler(const gchar *log_domain, GLogLevelFlags log_level,
const gchar *message, gpointer user_data);
void ob_debug_startup(void)
{ {
show = enable; ObtPaths *p = obt_paths_new();
gchar *dir = g_build_filename(obt_paths_cache_home(p),
"openbox", NULL);
/* log messages to a log file! fancy, no? */
if (!obt_paths_mkdir_path(dir, 0777))
g_message(_("Unable to make directory '%s': %s"),
dir, g_strerror(errno));
else {
gchar *name = g_build_filename(obt_paths_cache_home(p),
"openbox", "openbox.log", NULL);
log_file = fopen(name, "w");
g_free(name);
}
rr_handler_id =
g_log_set_handler("ObRender", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL |
G_LOG_FLAG_RECURSION, log_handler, NULL);
obt_handler_id =
g_log_set_handler("Obt", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL |
G_LOG_FLAG_RECURSION, log_handler, NULL);
ob_handler_id =
g_log_set_handler("Openbox", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL |
G_LOG_FLAG_RECURSION, log_handler, NULL);
g_free(dir);
} }
void ob_debug(const gchar *a, ...) void ob_debug_shutdown(void)
{ {
va_list vl; g_log_remove_handler("ObRender", rr_handler_id);
g_log_remove_handler("Obt", obt_handler_id);
g_log_remove_handler("Openbox", ob_handler_id);
if (show) { if (log_file) {
fprintf(stderr, "DEBUG: "); fclose(log_file);
va_start(vl, a); log_file = NULL;
vfprintf(stderr, a, vl);
va_end(vl);
} }
} }
static gboolean enabled_types[OB_DEBUG_TYPE_NUM] = {FALSE};
void ob_debug_enable(ObDebugType type, gboolean enable) void ob_debug_enable(ObDebugType type, gboolean enable)
{ {
g_assert(type < OB_DEBUG_TYPE_NUM); g_assert(type < OB_DEBUG_TYPE_NUM);
enabled_types[type] = enable; enabled_types[type] = enable;
} }
static inline void log_print(FILE *out, const gchar* log_domain,
const gchar *level, const gchar *message)
{
fprintf(out, log_domain);
fprintf(out, "-");
fprintf(out, level);
fprintf(out, ": ");
fprintf(out, message);
fprintf(out, "\n");
fflush(out);
}
static void log_handler(const gchar *log_domain, GLogLevelFlags log_level,
const gchar *message, gpointer data)
{
FILE *out;
const gchar *level;
switch (log_level & G_LOG_LEVEL_MASK) {
case G_LOG_LEVEL_DEBUG: level = "Debug"; out = stdout; break;
case G_LOG_LEVEL_INFO: level = "Info"; out = stdout; break;
case G_LOG_LEVEL_MESSAGE: level = "Message"; out = stdout; break;
case G_LOG_LEVEL_WARNING: level = "Warning"; out = stderr; break;
case G_LOG_LEVEL_CRITICAL: level = "Critical"; out = stderr; break;
case G_LOG_LEVEL_ERROR: level = "Error"; out = stderr; break;
default: g_assert_not_reached(); /* invalid level.. */
}
log_print(out, log_domain, level, message);
if (log_file) log_print(log_file, log_domain, level, message);
}
static inline void log_argv(ObDebugType type,
const gchar *format, va_list args)
{
const gchar *prefix;
gchar *message;
g_assert(type < OB_DEBUG_TYPE_NUM);
if (!enabled_types[type]) return;
switch (type) {
case OB_DEBUG_FOCUS: prefix = "(FOCUS) "; break;
case OB_DEBUG_APP_BUGS: prefix = "(APPLICATION BUG) "; break;
case OB_DEBUG_SM: prefix = "(SESSION) "; break;
default: prefix = NULL; break;
}
message = g_strdup_vprintf(format, args);
if (prefix) {
gchar *a = message;
message = g_strconcat(prefix, message, NULL);
g_free(a);
}
g_debug(message);
g_free(message);
}
void ob_debug(const gchar *a, ...)
{
va_list vl;
va_start(vl, a);
log_argv(OB_DEBUG_NORMAL, a, vl);
va_end(vl);
}
void ob_debug_type(ObDebugType type, const gchar *a, ...) void ob_debug_type(ObDebugType type, const gchar *a, ...)
{ {
va_list vl; va_list vl;
g_assert(type < OB_DEBUG_TYPE_NUM); va_start(vl, a);
log_argv(type, a, vl);
if (show && enabled_types[type]) { va_end(vl);
switch (type) {
case OB_DEBUG_FOCUS:
fprintf(stderr, "FOCUS: ");
break;
case OB_DEBUG_APP_BUGS:
fprintf(stderr, "APPLICATION BUG: ");
break;
case OB_DEBUG_SM:
fprintf(stderr, "SESSION: ");
break;
default:
g_assert_not_reached();
}
va_start(vl, a);
vfprintf(stderr, a, vl);
va_end(vl);
}
} }

View file

@ -21,11 +21,13 @@
#include <glib.h> #include <glib.h>
void ob_debug_show_output(gboolean enable); void ob_debug_startup();
void ob_debug_shutdown();
void ob_debug(const gchar *a, ...); void ob_debug(const gchar *a, ...);
typedef enum { typedef enum {
OB_DEBUG_NORMAL,
OB_DEBUG_FOCUS, OB_DEBUG_FOCUS,
OB_DEBUG_APP_BUGS, OB_DEBUG_APP_BUGS,
OB_DEBUG_SM, OB_DEBUG_SM,

View file

@ -182,7 +182,7 @@ void dock_add(Window win, XWMHints *wmhints)
dock_app_grab_button(app, TRUE); dock_app_grab_button(app, TRUE);
ob_debug("Managed Dock App: 0x%lx (%s)\n", app->icon_win, app->class); ob_debug("Managed Dock App: 0x%lx (%s)", app->icon_win, app->class);
} }
void dock_remove_all(void) void dock_remove_all(void)
@ -206,7 +206,7 @@ void dock_remove(ObDockApp *app, gboolean reparent)
dock->dock_apps = g_list_remove(dock->dock_apps, app); dock->dock_apps = g_list_remove(dock->dock_apps, app);
dock_configure(); dock_configure();
ob_debug("Unmanaged Dock App: 0x%lx (%s)\n", app->icon_win, app->class); ob_debug("Unmanaged Dock App: 0x%lx (%s)", app->icon_win, app->class);
g_free(app->name); g_free(app->name);
g_free(app->class); g_free(app->class);

View file

@ -425,7 +425,7 @@ static void print_focusevent(XEvent *e)
g_assert(modestr); g_assert(modestr);
g_assert(detailstr); g_assert(detailstr);
ob_debug_type(OB_DEBUG_FOCUS, "Focus%s 0x%x mode=%s detail=%s\n", ob_debug_type(OB_DEBUG_FOCUS, "Focus%s 0x%x mode=%s detail=%s",
(e->xfocus.type == FocusIn ? "In" : "Out"), (e->xfocus.type == FocusIn ? "In" : "Out"),
win, win,
modestr, detailstr); modestr, detailstr);
@ -525,7 +525,7 @@ static void event_process(const XEvent *ec, gpointer data)
XEvent ce; XEvent ce;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to root or pointer root/none\n"); "Focus went to root or pointer root/none");
if (e->xfocus.detail == NotifyInferior || if (e->xfocus.detail == NotifyInferior ||
e->xfocus.detail == NotifyNonlinear) e->xfocus.detail == NotifyNonlinear)
@ -551,7 +551,7 @@ static void event_process(const XEvent *ec, gpointer data)
{ {
XPutBackEvent(obt_display, &ce); XPutBackEvent(obt_display, &ce);
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
" but another FocusIn is coming\n"); " but another FocusIn is coming");
} else { } else {
/* Focus has been reverted. /* Focus has been reverted.
@ -567,7 +567,7 @@ static void event_process(const XEvent *ec, gpointer data)
else if (!client) else if (!client)
{ {
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to a window that is already gone\n"); "Focus went to a window that is already gone");
/* If you send focus to a window and then it disappears, you can /* If you send focus to a window and then it disappears, you can
get the FocusIn for it, after it is unmanaged. get the FocusIn for it, after it is unmanaged.
@ -598,12 +598,12 @@ static void event_process(const XEvent *ec, gpointer data)
root != obt_root(ob_screen)) root != obt_root(ob_screen))
{ {
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to another screen !\n"); "Focus went to another screen !");
focus_left_screen = TRUE; focus_left_screen = TRUE;
} }
else else
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to a black hole !\n"); "Focus went to a black hole !");
obt_display_ignore_errors(FALSE); obt_display_ignore_errors(FALSE);
/* nothing is focused */ /* nothing is focused */
focus_set_client(NULL); focus_set_client(NULL);
@ -615,7 +615,7 @@ static void event_process(const XEvent *ec, gpointer data)
/* The FocusIn was ignored, this means it was on a window /* The FocusIn was ignored, this means it was on a window
that isn't a client. */ that isn't a client. */
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to an unmanaged window 0x%x !\n", "Focus went to an unmanaged window 0x%x !",
ce.xfocus.window); ce.xfocus.window);
focus_fallback(TRUE, config_focus_under_mouse, TRUE, TRUE); focus_fallback(TRUE, config_focus_under_mouse, TRUE, TRUE);
} }
@ -643,7 +643,7 @@ static void event_process(const XEvent *ec, gpointer data)
else if (e->type == MappingNotify) { else if (e->type == MappingNotify) {
/* keyboard layout changes for modifier mapping changes. reload the /* keyboard layout changes for modifier mapping changes. reload the
modifier map, and rebind all the key bindings as appropriate */ modifier map, and rebind all the key bindings as appropriate */
ob_debug("Kepboard map changed. Reloading keyboard bindings.\n"); ob_debug("Kepboard map changed. Reloading keyboard bindings.");
obt_keyboard_reload(); obt_keyboard_reload();
keyboard_rebind(); keyboard_rebind();
} }
@ -736,7 +736,7 @@ static void event_handle_root(XEvent *e)
switch(e->type) { switch(e->type) {
case SelectionClear: case SelectionClear:
ob_debug("Another WM has requested to replace us. Exiting.\n"); ob_debug("Another WM has requested to replace us. Exiting.");
ob_exit_replace(); ob_exit_replace();
break; break;
@ -751,7 +751,7 @@ static void event_handle_root(XEvent *e)
if (event_curtime == 0) if (event_curtime == 0)
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_CURRENT_DESKTOP message is missing " "_NET_CURRENT_DESKTOP message is missing "
"a timestamp\n"); "a timestamp");
screen_set_desktop(d, TRUE); screen_set_desktop(d, TRUE);
} }
} else if (msgtype == OBT_PROP_ATOM(NET_NUMBER_OF_DESKTOPS)) { } else if (msgtype == OBT_PROP_ATOM(NET_NUMBER_OF_DESKTOPS)) {
@ -761,7 +761,7 @@ static void event_handle_root(XEvent *e)
} else if (msgtype == OBT_PROP_ATOM(NET_SHOWING_DESKTOP)) { } else if (msgtype == OBT_PROP_ATOM(NET_SHOWING_DESKTOP)) {
screen_show_desktop(e->xclient.data.l[0] != 0, NULL); screen_show_desktop(e->xclient.data.l[0] != 0, NULL);
} else if (msgtype == OBT_PROP_ATOM(OB_CONTROL)) { } else if (msgtype == OBT_PROP_ATOM(OB_CONTROL)) {
ob_debug("OB_CONTROL: %d\n", e->xclient.data.l[0]); ob_debug("OB_CONTROL: %d", e->xclient.data.l[0]);
if (e->xclient.data.l[0] == 1) if (e->xclient.data.l[0] == 1)
ob_reconfigure(); ob_reconfigure();
else if (e->xclient.data.l[0] == 2) else if (e->xclient.data.l[0] == 2)
@ -775,7 +775,7 @@ static void event_handle_root(XEvent *e)
break; break;
case PropertyNotify: case PropertyNotify:
if (e->xproperty.atom == OBT_PROP_ATOM(NET_DESKTOP_NAMES)) { if (e->xproperty.atom == OBT_PROP_ATOM(NET_DESKTOP_NAMES)) {
ob_debug("UPDATE DESKTOP NAMES\n"); ob_debug("UPDATE DESKTOP NAMES");
screen_update_desktop_names(); screen_update_desktop_names();
} }
else if (e->xproperty.atom == OBT_PROP_ATOM(NET_DESKTOP_LAYOUT)) else if (e->xproperty.atom == OBT_PROP_ATOM(NET_DESKTOP_LAYOUT))
@ -988,7 +988,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
event_end_ignore_all_enters(event_start_ignore_all_enters()); event_end_ignore_all_enters(event_start_ignore_all_enters());
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"%sNotify mode %d detail %d on %lx\n", "%sNotify mode %d detail %d on %lx",
(e->type == EnterNotify ? "Enter" : "Leave"), (e->type == EnterNotify ? "Enter" : "Leave"),
e->xcrossing.mode, e->xcrossing.mode,
e->xcrossing.detail, (client?client->window:0)); e->xcrossing.detail, (client?client->window:0));
@ -1045,7 +1045,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
{ {
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"%sNotify mode %d detail %d serial %lu on %lx " "%sNotify mode %d detail %d serial %lu on %lx "
"IGNORED\n", "IGNORED",
(e->type == EnterNotify ? "Enter" : "Leave"), (e->type == EnterNotify ? "Enter" : "Leave"),
e->xcrossing.mode, e->xcrossing.mode,
e->xcrossing.detail, e->xcrossing.detail,
@ -1055,7 +1055,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
else { else {
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"%sNotify mode %d detail %d serial %lu on %lx, " "%sNotify mode %d detail %d serial %lu on %lx, "
"focusing window\n", "focusing window",
(e->type == EnterNotify ? "Enter" : "Leave"), (e->type == EnterNotify ? "Enter" : "Leave"),
e->xcrossing.mode, e->xcrossing.mode,
e->xcrossing.detail, e->xcrossing.detail,
@ -1086,10 +1086,10 @@ static void event_handle_client(ObClient *client, XEvent *e)
RECT_TO_DIMS(client->area, x, y, w, h); RECT_TO_DIMS(client->area, x, y, w, h);
ob_debug("ConfigureRequest for \"%s\" desktop %d wmstate %d " ob_debug("ConfigureRequest for \"%s\" desktop %d wmstate %d "
"visibile %d\n" "visibile %d",
" x %d y %d w %d h %d b %d\n",
client->title, client->title,
screen_desktop, client->wmstate, client->frame->visible, screen_desktop, client->wmstate, client->frame->visible);
ob_debug(" x %d y %d w %d h %d b %d",
x, y, w, h, client->border_width); x, y, w, h, client->border_width);
if (e->xconfigurerequest.value_mask & CWBorderWidth) if (e->xconfigurerequest.value_mask & CWBorderWidth)
@ -1169,7 +1169,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
} }
ob_debug("ConfigureRequest x(%d) %d y(%d) %d w(%d) %d h(%d) %d " ob_debug("ConfigureRequest x(%d) %d y(%d) %d w(%d) %d h(%d) %d "
"move %d resize %d\n", "move %d resize %d",
e->xconfigurerequest.value_mask & CWX, x, e->xconfigurerequest.value_mask & CWX, x,
e->xconfigurerequest.value_mask & CWY, y, e->xconfigurerequest.value_mask & CWY, y,
e->xconfigurerequest.value_mask & CWWidth, w, e->xconfigurerequest.value_mask & CWWidth, w,
@ -1195,7 +1195,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"Application %s is trying to move via " "Application %s is trying to move via "
"ConfigureRequest to it's root window position " "ConfigureRequest to it's root window position "
"but it is not using StaticGravity\n", "but it is not using StaticGravity",
client->title); client->title);
/* don't move it */ /* don't move it */
x = client->area.x; x = client->area.x;
@ -1223,7 +1223,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
client_find_onscreen(client, &x, &y, w, h, FALSE); client_find_onscreen(client, &x, &y, w, h, FALSE);
ob_debug("Granting ConfigureRequest x %d y %d w %d h %d\n", ob_debug("Granting ConfigureRequest x %d y %d w %d h %d",
x, y, w, h); x, y, w, h);
client_configure(client, x, y, w, h, FALSE, TRUE, TRUE); client_configure(client, x, y, w, h, FALSE, TRUE, TRUE);
} }
@ -1231,7 +1231,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
} }
case UnmapNotify: case UnmapNotify:
ob_debug("UnmapNotify for window 0x%x eventwin 0x%x sendevent %d " ob_debug("UnmapNotify for window 0x%x eventwin 0x%x sendevent %d "
"ignores left %d\n", "ignores left %d",
client->window, e->xunmap.event, e->xunmap.from_configure, client->window, e->xunmap.event, e->xunmap.from_configure,
client->ignore_unmaps); client->ignore_unmaps);
if (client->ignore_unmaps) { if (client->ignore_unmaps) {
@ -1241,7 +1241,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
client_unmanage(client); client_unmanage(client);
break; break;
case DestroyNotify: case DestroyNotify:
ob_debug("DestroyNotify for window 0x%x\n", client->window); ob_debug("DestroyNotify for window 0x%x", client->window);
client_unmanage(client); client_unmanage(client);
break; break;
case ReparentNotify: case ReparentNotify:
@ -1259,11 +1259,11 @@ static void event_handle_client(ObClient *client, XEvent *e)
X server to deal with after we unmanage the window */ X server to deal with after we unmanage the window */
XPutBackEvent(obt_display, e); XPutBackEvent(obt_display, e);
ob_debug("ReparentNotify for window 0x%x\n", client->window); ob_debug("ReparentNotify for window 0x%x", client->window);
client_unmanage(client); client_unmanage(client);
break; break;
case MapRequest: case MapRequest:
ob_debug("MapRequest for 0x%lx\n", client->window); ob_debug("MapRequest for 0x%lx", client->window);
if (!client->iconic) break; /* this normally doesn't happen, but if it if (!client->iconic) break; /* this normally doesn't happen, but if it
does, we don't want it! does, we don't want it!
it can happen now when the window is on it can happen now when the window is on
@ -1313,7 +1313,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
gulong ignore_start; gulong ignore_start;
/* can't compress these */ /* can't compress these */
ob_debug("net_wm_state %s %ld %ld for 0x%lx\n", ob_debug("net_wm_state %s %ld %ld for 0x%lx",
(e->xclient.data.l[0] == 0 ? "Remove" : (e->xclient.data.l[0] == 0 ? "Remove" :
e->xclient.data.l[0] == 1 ? "Add" : e->xclient.data.l[0] == 1 ? "Add" :
e->xclient.data.l[0] == 2 ? "Toggle" : "INVALID"), e->xclient.data.l[0] == 2 ? "Toggle" : "INVALID"),
@ -1328,10 +1328,10 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (!config_focus_under_mouse) if (!config_focus_under_mouse)
event_end_ignore_all_enters(ignore_start); event_end_ignore_all_enters(ignore_start);
} else if (msgtype == OBT_PROP_ATOM(NET_CLOSE_WINDOW)) { } else if (msgtype == OBT_PROP_ATOM(NET_CLOSE_WINDOW)) {
ob_debug("net_close_window for 0x%lx\n", client->window); ob_debug("net_close_window for 0x%lx", client->window);
client_close(client); client_close(client);
} else if (msgtype == OBT_PROP_ATOM(NET_ACTIVE_WINDOW)) { } else if (msgtype == OBT_PROP_ATOM(NET_ACTIVE_WINDOW)) {
ob_debug("net_active_window for 0x%lx source=%s\n", ob_debug("net_active_window for 0x%lx source=%s",
client->window, client->window,
(e->xclient.data.l[0] == 0 ? "unknown" : (e->xclient.data.l[0] == 0 ? "unknown" :
(e->xclient.data.l[0] == 1 ? "application" : (e->xclient.data.l[0] == 1 ? "application" :
@ -1345,16 +1345,16 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (e->xclient.data.l[1] == 0) if (e->xclient.data.l[1] == 0)
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_ACTIVE_WINDOW message for window %s is" "_NET_ACTIVE_WINDOW message for window %s is"
" missing a timestamp\n", client->title); " missing a timestamp", client->title);
} else } else
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_ACTIVE_WINDOW message for window %s is " "_NET_ACTIVE_WINDOW message for window %s is "
"missing source indication\n"); "missing source indication");
client_activate(client, FALSE, TRUE, TRUE, client_activate(client, FALSE, TRUE, TRUE,
(e->xclient.data.l[0] == 0 || (e->xclient.data.l[0] == 0 ||
e->xclient.data.l[0] == 2)); e->xclient.data.l[0] == 2));
} else if (msgtype == OBT_PROP_ATOM(NET_WM_MOVERESIZE)) { } else if (msgtype == OBT_PROP_ATOM(NET_WM_MOVERESIZE)) {
ob_debug("net_wm_moveresize for 0x%lx direction %d\n", ob_debug("net_wm_moveresize for 0x%lx direction %d",
client->window, e->xclient.data.l[2]); client->window, e->xclient.data.l[2]);
if ((Atom)e->xclient.data.l[2] == if ((Atom)e->xclient.data.l[2] ==
OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPLEFT) || OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPLEFT) ||
@ -1427,7 +1427,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
else else
h = client->area.height; h = client->area.height;
ob_debug("MOVERESIZE x %d %d y %d %d (gravity %d)\n", ob_debug("MOVERESIZE x %d %d y %d %d (gravity %d)",
e->xclient.data.l[0] & 1 << 8, x, e->xclient.data.l[0] & 1 << 8, x,
e->xclient.data.l[0] & 1 << 9, y, e->xclient.data.l[0] & 1 << 9, y,
client->gravity); client->gravity);
@ -1441,7 +1441,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (e->xclient.data.l[0] != 2) { if (e->xclient.data.l[0] != 2) {
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_RESTACK_WINDOW sent for window %s with " "_NET_RESTACK_WINDOW sent for window %s with "
"invalid source indication %ld\n", "invalid source indication %ld",
client->title, e->xclient.data.l[0]); client->title, e->xclient.data.l[0]);
} else { } else {
ObClient *sibling = NULL; ObClient *sibling = NULL;
@ -1455,7 +1455,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (sibling == NULL) if (sibling == NULL)
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_RESTACK_WINDOW sent for window %s " "_NET_RESTACK_WINDOW sent for window %s "
"with invalid sibling 0x%x\n", "with invalid sibling 0x%x",
client->title, e->xclient.data.l[1]); client->title, e->xclient.data.l[1]);
} }
if (e->xclient.data.l[2] == Below || if (e->xclient.data.l[2] == Below ||
@ -1480,7 +1480,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
} else } else
ob_debug_type(OB_DEBUG_APP_BUGS, ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_RESTACK_WINDOW sent for window %s " "_NET_RESTACK_WINDOW sent for window %s "
"with invalid detail %d\n", "with invalid detail %d",
client->title, e->xclient.data.l[2]); client->title, e->xclient.data.l[2]);
} }
} }
@ -1523,7 +1523,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
msgtype = e->xproperty.atom; msgtype = e->xproperty.atom;
if (msgtype == XA_WM_NORMAL_HINTS) { if (msgtype == XA_WM_NORMAL_HINTS) {
ob_debug("Update NORMAL hints\n"); ob_debug("Update NORMAL hints");
client_update_normal_hints(client); client_update_normal_hints(client);
/* normal hints can make a window non-resizable */ /* normal hints can make a window non-resizable */
client_setup_decor_and_functions(client, FALSE); client_setup_decor_and_functions(client, FALSE);
@ -1945,7 +1945,7 @@ static void event_ignore_enter_range(gulong start, gulong end)
r->end = end; r->end = end;
ignore_serials = g_slist_prepend(ignore_serials, r); ignore_serials = g_slist_prepend(ignore_serials, r);
ob_debug_type(OB_DEBUG_FOCUS, "ignoring enters from %lu until %lu\n", ob_debug_type(OB_DEBUG_FOCUS, "ignoring enters from %lu until %lu",
r->start, r->end); r->start, r->end);
/* increment the serial so we don't ignore events we weren't meant to */ /* increment the serial so we don't ignore events we weren't meant to */
@ -1992,19 +1992,19 @@ void event_cancel_all_key_grabs(void)
{ {
if (actions_interactive_act_running()) { if (actions_interactive_act_running()) {
actions_interactive_cancel_act(); actions_interactive_cancel_act();
ob_debug("KILLED interactive action\n"); ob_debug("KILLED interactive action");
} }
else if (menu_frame_visible) { else if (menu_frame_visible) {
menu_frame_hide_all(); menu_frame_hide_all();
ob_debug("KILLED open menus\n"); ob_debug("KILLED open menus");
} }
else if (moveresize_in_progress) { else if (moveresize_in_progress) {
moveresize_end(TRUE); moveresize_end(TRUE);
ob_debug("KILLED interactive moveresize\n"); ob_debug("KILLED interactive moveresize");
} }
else if (grab_on_keyboard()) { else if (grab_on_keyboard()) {
ungrab_keyboard(); ungrab_keyboard();
ob_debug("KILLED active grab on keyboard\n"); ob_debug("KILLED active grab on keyboard");
} }
else else
ungrab_passive_key(); ungrab_passive_key();

View file

@ -66,7 +66,7 @@ void focus_set_client(ObClient *client)
Window active; Window active;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"focus_set_client 0x%lx\n", client ? client->window : 0); "focus_set_client 0x%lx", client ? client->window : 0);
if (focus_client == client) if (focus_client == client)
return; return;
@ -103,18 +103,18 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
GList *it; GList *it;
ObClient *c; ObClient *c;
ob_debug_type(OB_DEBUG_FOCUS, "trying pointer stuff\n"); ob_debug_type(OB_DEBUG_FOCUS, "trying pointer stuff");
if (allow_pointer && config_focus_follow) if (allow_pointer && config_focus_follow)
if ((c = client_under_pointer()) && if ((c = client_under_pointer()) &&
(allow_refocus || client_focus_target(c) != old) && (allow_refocus || client_focus_target(c) != old) &&
(client_normal(c) && (client_normal(c) &&
client_focus(c))) client_focus(c)))
{ {
ob_debug_type(OB_DEBUG_FOCUS, "found in pointer stuff\n"); ob_debug_type(OB_DEBUG_FOCUS, "found in pointer stuff");
return c; return c;
} }
ob_debug_type(OB_DEBUG_FOCUS, "trying the focus order\n"); ob_debug_type(OB_DEBUG_FOCUS, "trying the focus order");
for (it = focus_order; it; it = g_list_next(it)) { for (it = focus_order; it; it = g_list_next(it)) {
c = it->data; c = it->data;
/* fallback focus to a window if: /* fallback focus to a window if:
@ -130,12 +130,12 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
(allow_refocus || client_focus_target(c) != old) && (allow_refocus || client_focus_target(c) != old) &&
client_focus(c)) client_focus(c))
{ {
ob_debug_type(OB_DEBUG_FOCUS, "found in focus order\n"); ob_debug_type(OB_DEBUG_FOCUS, "found in focus order");
return c; return c;
} }
} }
ob_debug_type(OB_DEBUG_FOCUS, "trying a desktop window\n"); ob_debug_type(OB_DEBUG_FOCUS, "trying a desktop window");
for (it = focus_order; it; it = g_list_next(it)) { for (it = focus_order; it; it = g_list_next(it)) {
c = it->data; c = it->data;
/* fallback focus to a window if: /* fallback focus to a window if:
@ -149,7 +149,7 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
(allow_refocus || client_focus_target(c) != old) && (allow_refocus || client_focus_target(c) != old) &&
client_focus(c)) client_focus(c))
{ {
ob_debug_type(OB_DEBUG_FOCUS, "found a desktop window\n"); ob_debug_type(OB_DEBUG_FOCUS, "found a desktop window");
return c; return c;
} }
} }

View file

@ -116,6 +116,8 @@ gint main(gint argc, gchar **argv)
state = OB_STATE_STARTING; state = OB_STATE_STARTING;
ob_debug_startup();
/* initialize the locale */ /* initialize the locale */
if (!setlocale(LC_ALL, "")) if (!setlocale(LC_ALL, ""))
g_message("Couldn't set locale from environment."); g_message("Couldn't set locale from environment.");
@ -123,10 +125,6 @@ gint main(gint argc, gchar **argv)
bind_textdomain_codeset(PACKAGE_NAME, "UTF-8"); bind_textdomain_codeset(PACKAGE_NAME, "UTF-8");
textdomain(PACKAGE_NAME); textdomain(PACKAGE_NAME);
if (chdir(g_get_home_dir()) == -1)
g_message(_("Unable to change to home directory '%s': %s"),
g_get_home_dir(), g_strerror(errno));
/* parse the command line args, which can change the argv[0] */ /* parse the command line args, which can change the argv[0] */
parse_args(&argc, argv); parse_args(&argc, argv);
/* parse the environment variables */ /* parse the environment variables */
@ -420,6 +418,8 @@ gint main(gint argc, gchar **argv)
g_free(ob_sm_id); g_free(ob_sm_id);
g_free(program_name); g_free(program_name);
ob_debug_shutdown();
return exitcode; return exitcode;
} }
@ -427,11 +427,11 @@ static void signal_handler(gint signal, gpointer data)
{ {
switch (signal) { switch (signal) {
case SIGUSR1: case SIGUSR1:
ob_debug("Caught signal %d. Restarting.\n", signal); ob_debug("Caught signal %d. Restarting.", signal);
ob_restart(); ob_restart();
break; break;
case SIGUSR2: case SIGUSR2:
ob_debug("Caught signal %d. Reconfiguring.\n", signal); ob_debug("Caught signal %d. Reconfiguring.", signal);
ob_reconfigure(); ob_reconfigure();
break; break;
case SIGCHLD: case SIGCHLD:
@ -439,7 +439,7 @@ static void signal_handler(gint signal, gpointer data)
while (waitpid(-1, NULL, WNOHANG) > 0); while (waitpid(-1, NULL, WNOHANG) > 0);
break; break;
default: default:
ob_debug("Caught signal %d. Exiting.\n", signal); ob_debug("Caught signal %d. Exiting.", signal);
/* TERM and INT return a 0 code */ /* TERM and INT return a 0 code */
ob_exit(!(signal == SIGTERM || signal == SIGINT)); ob_exit(!(signal == SIGTERM || signal == SIGINT));
} }
@ -473,6 +473,7 @@ static void print_help()
g_print(_(" --sync Run in synchronous mode\n")); g_print(_(" --sync Run in synchronous mode\n"));
g_print(_(" --debug Display debugging output\n")); g_print(_(" --debug Display debugging output\n"));
g_print(_(" --debug-focus Display debugging output for focus handling\n")); g_print(_(" --debug-focus Display debugging output for focus handling\n"));
g_print(_(" --debug-session Display debugging output for session managment\n"));
g_print(_(" --debug-xinerama Split the display into fake xinerama screens\n")); g_print(_(" --debug-xinerama Split the display into fake xinerama screens\n"));
g_print(_("\nPlease report bugs at %s\n"), PACKAGE_BUGREPORT); g_print(_("\nPlease report bugs at %s\n"), PACKAGE_BUGREPORT);
} }
@ -519,16 +520,19 @@ static void parse_args(gint *argc, gchar **argv)
xsync = TRUE; xsync = TRUE;
} }
else if (!strcmp(argv[i], "--debug")) { else if (!strcmp(argv[i], "--debug")) {
ob_debug_show_output(TRUE); ob_debug_enable(OB_DEBUG_NORMAL, TRUE);
ob_debug_enable(OB_DEBUG_SM, TRUE);
ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE); ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE);
} }
else if (!strcmp(argv[i], "--debug-focus")) { else if (!strcmp(argv[i], "--debug-focus")) {
ob_debug_show_output(TRUE); ob_debug_enable(OB_DEBUG_NORMAL, TRUE);
ob_debug_enable(OB_DEBUG_SM, TRUE);
ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE); ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE);
ob_debug_enable(OB_DEBUG_FOCUS, TRUE); ob_debug_enable(OB_DEBUG_FOCUS, TRUE);
} }
else if (!strcmp(argv[i], "--debug-session")) {
ob_debug_enable(OB_DEBUG_NORMAL, TRUE);
ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE);
ob_debug_enable(OB_DEBUG_SM, TRUE);
}
else if (!strcmp(argv[i], "--debug-xinerama")) { else if (!strcmp(argv[i], "--debug-xinerama")) {
ob_debug_xinerama = TRUE; ob_debug_xinerama = TRUE;
} }
@ -549,7 +553,7 @@ static void parse_args(gint *argc, gchar **argv)
ob_sm_save_file = g_strdup(argv[i+1]); ob_sm_save_file = g_strdup(argv[i+1]);
remove_args(argc, argv, i, 2); remove_args(argc, argv, i, 2);
--i; /* this arg was removed so go back */ --i; /* this arg was removed so go back */
ob_debug_type(OB_DEBUG_SM, "--sm-save-file %s\n", ob_debug_type(OB_DEBUG_SM, "--sm-save-file %s",
ob_sm_save_file); ob_sm_save_file);
} }
} }
@ -561,7 +565,7 @@ static void parse_args(gint *argc, gchar **argv)
ob_sm_id = g_strdup(argv[i+1]); ob_sm_id = g_strdup(argv[i+1]);
remove_args(argc, argv, i, 2); remove_args(argc, argv, i, 2);
--i; /* this arg was removed so go back */ --i; /* this arg was removed so go back */
ob_debug_type(OB_DEBUG_SM, "--sm-client-id %s\n", ob_sm_id); ob_debug_type(OB_DEBUG_SM, "--sm-client-id %s", ob_sm_id);
} }
} }
else if (!strcmp(argv[i], "--sm-disable")) { else if (!strcmp(argv[i], "--sm-disable")) {

View file

@ -99,7 +99,7 @@ void ping_got_pong(guint32 id)
ObPingTarget *t; ObPingTarget *t;
if ((t = g_hash_table_lookup(ping_ids, &id))) { if ((t = g_hash_table_lookup(ping_ids, &id))) {
/*ob_debug("-PONG: '%s' (id %u)\n", t->client->title, t->id);*/ /*ob_debug("-PONG: '%s' (id %u)", t->client->title, t->id);*/
if (t->waiting > PING_TIMEOUT_WARN) { if (t->waiting > PING_TIMEOUT_WARN) {
/* we had notified that they weren't responding, so now we /* we had notified that they weren't responding, so now we
need to notify that they are again */ need to notify that they are again */
@ -108,7 +108,7 @@ void ping_got_pong(guint32 id)
t->waiting = 0; /* not waiting for a reply anymore */ t->waiting = 0; /* not waiting for a reply anymore */
} }
else else
ob_debug("Got PONG with id %u but not waiting for one\n", id); ob_debug("Got PONG with id %u but not waiting for one", id);
} }
static gboolean find_client(gpointer key, gpointer value, gpointer client) static gboolean find_client(gpointer key, gpointer value, gpointer client)
@ -131,7 +131,7 @@ static void ping_send(ObPingTarget *t)
g_hash_table_insert(ping_ids, &t->id, t); g_hash_table_insert(ping_ids, &t->id, t);
} }
/*ob_debug("+PING: '%s' (id %u)\n", t->client->title, t->id);*/ /*ob_debug("+PING: '%s' (id %u)", t->client->title, t->id);*/
OBT_PROP_MSG_TO(t->client->window, t->client->window, WM_PROTOCOLS, OBT_PROP_MSG_TO(t->client->window, t->client->window, WM_PROTOCOLS,
OBT_PROP_ATOM(NET_WM_PING), t->id, t->client->window, 0, 0, OBT_PROP_ATOM(NET_WM_PING), t->id, t->client->window, 0, 0,
NoEventMask); NoEventMask);

View file

@ -76,7 +76,7 @@ static Rect **pick_head(ObClient *c)
/* try direct parent first */ /* try direct parent first */
if ((p = client_direct_parent(c))) { if ((p = client_direct_parent(c))) {
add_choice(choice, client_monitor(p)); add_choice(choice, client_monitor(p));
ob_debug("placement adding choice %d for parent\n", ob_debug("placement adding choice %d for parent",
client_monitor(p)); client_monitor(p));
} }
@ -92,7 +92,7 @@ static Rect **pick_head(ObClient *c)
itc->desktop == DESKTOP_ALL || c->desktop == DESKTOP_ALL)) itc->desktop == DESKTOP_ALL || c->desktop == DESKTOP_ALL))
{ {
add_choice(choice, client_monitor(it->data)); add_choice(choice, client_monitor(it->data));
ob_debug("placement adding choice %d for group sibling\n", ob_debug("placement adding choice %d for group sibling",
client_monitor(it->data)); client_monitor(it->data));
} }
} }
@ -103,7 +103,7 @@ static Rect **pick_head(ObClient *c)
if (itc != c) { if (itc != c) {
add_choice(choice, client_monitor(it->data)); add_choice(choice, client_monitor(it->data));
ob_debug("placement adding choice %d for group sibling on " ob_debug("placement adding choice %d for group sibling on "
"another desktop\n", client_monitor(it->data)); "another desktop", client_monitor(it->data));
} }
} }
} }
@ -113,7 +113,7 @@ static Rect **pick_head(ObClient *c)
config_place_monitor != OB_PLACE_MONITOR_MOUSE) config_place_monitor != OB_PLACE_MONITOR_MOUSE)
{ {
add_choice(choice, client_monitor(focus_client)); add_choice(choice, client_monitor(focus_client));
ob_debug("placement adding choice %d for normal focused window\n", ob_debug("placement adding choice %d for normal focused window",
client_monitor(focus_client)); client_monitor(focus_client));
} }
@ -125,7 +125,7 @@ static Rect **pick_head(ObClient *c)
g_free(monitor); g_free(monitor);
if (contain) { if (contain) {
add_choice(choice, i); add_choice(choice, i);
ob_debug("placement adding choice %d for mouse pointer\n", i); ob_debug("placement adding choice %d for mouse pointer", i);
break; break;
} }
} }

View file

@ -662,7 +662,7 @@ void screen_set_desktop(guint num, gboolean dofocus)
obt_main_loop_timeout_add(ob_main_loop, REMEMBER_LAST_DESKTOP_TIME, obt_main_loop_timeout_add(ob_main_loop, REMEMBER_LAST_DESKTOP_TIME,
last_desktop_func, NULL, NULL, NULL); last_desktop_func, NULL, NULL, NULL);
ob_debug("Moving to desktop %d\n", num+1); ob_debug("Moving to desktop %d", num+1);
/* ignore enter events caused by the move */ /* ignore enter events caused by the move */
ignore_start = event_start_ignore_all_enters(); ignore_start = event_start_ignore_all_enters();
@ -719,7 +719,7 @@ void screen_add_desktop(gboolean current)
parent - which will have to be on the same desktop */ parent - which will have to be on the same desktop */
!client_direct_parent(c)) !client_direct_parent(c))
{ {
ob_debug("moving window %s\n", c->title); ob_debug("moving window %s", c->title);
client_set_desktop(c, c->desktop+1, FALSE, TRUE); client_set_desktop(c, c->desktop+1, FALSE, TRUE);
} }
} }
@ -760,7 +760,7 @@ void screen_remove_desktop(gboolean current)
parent - which will have to be on the same desktop */ parent - which will have to be on the same desktop */
!client_direct_parent(c)) !client_direct_parent(c))
{ {
ob_debug("moving window %s\n", c->title); ob_debug("moving window %s", c->title);
client_set_desktop(c, c->desktop - 1, TRUE, TRUE); client_set_desktop(c, c->desktop - 1, TRUE, TRUE);
} }
/* raise all the windows that are on the current desktop which /* raise all the windows that are on the current desktop which
@ -770,7 +770,7 @@ void screen_remove_desktop(gboolean current)
(d == DESKTOP_ALL || d == screen_desktop)) (d == DESKTOP_ALL || d == screen_desktop))
{ {
stacking_raise(CLIENT_AS_WINDOW(c)); stacking_raise(CLIENT_AS_WINDOW(c));
ob_debug("raising window %s\n", c->title); ob_debug("raising window %s", c->title);
} }
} }
} }
@ -778,7 +778,7 @@ void screen_remove_desktop(gboolean current)
/* fallback focus like we're changing desktops */ /* fallback focus like we're changing desktops */
if (screen_desktop < screen_num_desktops - 1) { if (screen_desktop < screen_num_desktops - 1) {
screen_fallback_focus(); screen_fallback_focus();
ob_debug("fake desktop change\n"); ob_debug("fake desktop change");
} }
screen_set_num_desktops(screen_num_desktops-1); screen_set_num_desktops(screen_num_desktops-1);

View file

@ -110,7 +110,7 @@ void session_startup(gint argc, gchar **argv)
if (ob_sm_save_file != NULL) { if (ob_sm_save_file != NULL) {
if (ob_sm_restore) { if (ob_sm_restore) {
ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n", ob_debug_type(OB_DEBUG_SM, "Loading from session file %s",
ob_sm_save_file); ob_sm_save_file);
session_load_file(ob_sm_save_file); session_load_file(ob_sm_save_file);
} }
@ -177,7 +177,7 @@ static gboolean session_connect()
/* connect to the server */ /* connect to the server */
oldid = ob_sm_id; oldid = ob_sm_id;
ob_debug_type(OB_DEBUG_SM, "Connecting to SM with id: %s\n", ob_debug_type(OB_DEBUG_SM, "Connecting to SM with id: %s",
oldid ? oldid : "(null)"); oldid ? oldid : "(null)");
sm_conn = SmcOpenConnection(NULL, NULL, 1, 0, sm_conn = SmcOpenConnection(NULL, NULL, 1, 0,
SmcSaveYourselfProcMask | SmcSaveYourselfProcMask |
@ -187,9 +187,9 @@ static gboolean session_connect()
&cb, oldid, &ob_sm_id, &cb, oldid, &ob_sm_id,
SM_ERR_LEN-1, sm_err); SM_ERR_LEN-1, sm_err);
g_free(oldid); g_free(oldid);
ob_debug_type(OB_DEBUG_SM, "Connected to SM with id: %s\n", ob_sm_id); ob_debug_type(OB_DEBUG_SM, "Connected to SM with id: %s", ob_sm_id);
if (sm_conn == NULL) if (sm_conn == NULL)
ob_debug("Failed to connect to session manager: %s\n", sm_err); ob_debug("Failed to connect to session manager: %s", sm_err);
return sm_conn != NULL; return sm_conn != NULL;
} }
@ -206,7 +206,7 @@ static void session_setup_program()
.vals = &vals .vals = &vals
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting program: %s\n", sm_argv[0]); ob_debug_type(OB_DEBUG_SM, "Setting program: %s", sm_argv[0]);
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
g_free(prop.name); g_free(prop.name);
g_free(prop.type); g_free(prop.type);
@ -227,7 +227,7 @@ static void session_setup_user()
.vals = &vals .vals = &vals
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting user: %s\n", user); ob_debug_type(OB_DEBUG_SM, "Setting user: %s", user);
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
g_free(prop.name); g_free(prop.name);
g_free(prop.type); g_free(prop.type);
@ -249,7 +249,7 @@ static void session_setup_restart_style(gboolean restart)
.vals = &vals .vals = &vals
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting restart: %d\n", restart); ob_debug_type(OB_DEBUG_SM, "Setting restart: %d", restart);
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
g_free(prop.name); g_free(prop.name);
g_free(prop.type); g_free(prop.type);
@ -270,7 +270,7 @@ static void session_setup_pid()
.vals = &vals .vals = &vals
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting pid: %s\n", pid); ob_debug_type(OB_DEBUG_SM, "Setting pid: %s", pid);
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
g_free(prop.name); g_free(prop.name);
g_free(prop.type); g_free(prop.type);
@ -293,7 +293,7 @@ static void session_setup_priority()
.vals = &vals .vals = &vals
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting priority: %d\n", priority); ob_debug_type(OB_DEBUG_SM, "Setting priority: %d", priority);
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
g_free(prop.name); g_free(prop.name);
g_free(prop.type); g_free(prop.type);
@ -312,11 +312,11 @@ static void session_setup_clone_command()
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting clone command: (%d)\n", sm_argc); ob_debug_type(OB_DEBUG_SM, "Setting clone command: (%d)", sm_argc);
for (i = 0; i < sm_argc; ++i) { for (i = 0; i < sm_argc; ++i) {
vals[i].value = sm_argv[i]; vals[i].value = sm_argv[i];
vals[i].length = strlen(sm_argv[i]) + 1; vals[i].length = strlen(sm_argv[i]) + 1;
ob_debug_type(OB_DEBUG_SM, " %s\n", vals[i].value); ob_debug_type(OB_DEBUG_SM, " %s", vals[i].value);
} }
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
@ -338,26 +338,26 @@ static void session_setup_restart_command()
}; };
SmProp *list = &prop; SmProp *list = &prop;
ob_debug_type(OB_DEBUG_SM, "Setting restart command: (%d)\n", sm_argc+4); ob_debug_type(OB_DEBUG_SM, "Setting restart command: (%d)", sm_argc+4);
for (i = 0; i < sm_argc; ++i) { for (i = 0; i < sm_argc; ++i) {
vals[i].value = sm_argv[i]; vals[i].value = sm_argv[i];
vals[i].length = strlen(sm_argv[i]) + 1; vals[i].length = strlen(sm_argv[i]) + 1;
ob_debug_type(OB_DEBUG_SM, " %s\n", vals[i].value); ob_debug_type(OB_DEBUG_SM, " %s", vals[i].value);
} }
vals[i].value = g_strdup("--sm-client-id"); vals[i].value = g_strdup("--sm-client-id");
vals[i].length = strlen("--sm-client-id") + 1; vals[i].length = strlen("--sm-client-id") + 1;
vals[i+1].value = ob_sm_id; vals[i+1].value = ob_sm_id;
vals[i+1].length = strlen(ob_sm_id) + 1; vals[i+1].length = strlen(ob_sm_id) + 1;
ob_debug_type(OB_DEBUG_SM, " %s\n", vals[i].value); ob_debug_type(OB_DEBUG_SM, " %s", vals[i].value);
ob_debug_type(OB_DEBUG_SM, " %s\n", vals[i+1].value); ob_debug_type(OB_DEBUG_SM, " %s", vals[i+1].value);
vals[i+2].value = g_strdup("--sm-save-file"); vals[i+2].value = g_strdup("--sm-save-file");
vals[i+2].length = strlen("--sm-save-file") + 1; vals[i+2].length = strlen("--sm-save-file") + 1;
vals[i+3].value = ob_sm_save_file; vals[i+3].value = ob_sm_save_file;
vals[i+3].length = strlen(ob_sm_save_file) + 1; vals[i+3].length = strlen(ob_sm_save_file) + 1;
ob_debug_type(OB_DEBUG_SM, " %s\n", vals[i+2].value); ob_debug_type(OB_DEBUG_SM, " %s", vals[i+2].value);
ob_debug_type(OB_DEBUG_SM, " %s\n", vals[i+3].value); ob_debug_type(OB_DEBUG_SM, " %s", vals[i+3].value);
SmcSetProperties(sm_conn, 1, &list); SmcSetProperties(sm_conn, 1, &list);
g_free(prop.name); g_free(prop.name);
@ -385,9 +385,9 @@ static void sm_save_yourself_2(SmcConn conn, SmPointer data)
ObSMSaveData *savedata = data; ObSMSaveData *savedata = data;
/* save the current state */ /* save the current state */
ob_debug_type(OB_DEBUG_SM, "Session save phase 2 requested\n"); ob_debug_type(OB_DEBUG_SM, "Session save phase 2 requested");
ob_debug_type(OB_DEBUG_SM, ob_debug_type(OB_DEBUG_SM,
" Saving session to file '%s'\n", ob_sm_save_file); " Saving session to file '%s'", ob_sm_save_file);
if (savedata == NULL) if (savedata == NULL)
savedata = sm_save_get_data(); savedata = sm_save_get_data();
success = session_save_to_file(savedata); success = session_save_to_file(savedata);
@ -396,7 +396,7 @@ static void sm_save_yourself_2(SmcConn conn, SmPointer data)
/* tell the session manager how to restore this state */ /* tell the session manager how to restore this state */
if (success) session_setup_restart_command(); if (success) session_setup_restart_command();
ob_debug_type(OB_DEBUG_SM, "Saving is done (success = %d)\n", success); ob_debug_type(OB_DEBUG_SM, "Saving is done (success = %d)", success);
SmcSaveYourselfDone(conn, success); SmcSaveYourselfDone(conn, success);
} }
@ -407,10 +407,10 @@ static void sm_save_yourself(SmcConn conn, SmPointer data, gint save_type,
ObSMSaveData *savedata = NULL; ObSMSaveData *savedata = NULL;
gchar *vendor; gchar *vendor;
ob_debug_type(OB_DEBUG_SM, "Session save requested\n"); ob_debug_type(OB_DEBUG_SM, "Session save requested");
vendor = SmcVendor(sm_conn); vendor = SmcVendor(sm_conn);
ob_debug_type(OB_DEBUG_SM, "Session manager's vendor: %s\n", vendor); ob_debug_type(OB_DEBUG_SM, "Session manager's vendor: %s", vendor);
if (!strcmp(vendor, "KDE")) { if (!strcmp(vendor, "KDE")) {
/* ksmserver guarantees that phase 1 will complete before allowing any /* ksmserver guarantees that phase 1 will complete before allowing any
@ -421,7 +421,7 @@ static void sm_save_yourself(SmcConn conn, SmPointer data, gint save_type,
free(vendor); free(vendor);
if (!SmcRequestSaveYourselfPhase2(conn, sm_save_yourself_2, savedata)) { if (!SmcRequestSaveYourselfPhase2(conn, sm_save_yourself_2, savedata)) {
ob_debug_type(OB_DEBUG_SM, "Requst for phase 2 failed\n"); ob_debug_type(OB_DEBUG_SM, "Requst for phase 2 failed");
g_free(savedata); g_free(savedata);
SmcSaveYourselfDone(conn, FALSE); SmcSaveYourselfDone(conn, FALSE);
} }
@ -429,18 +429,18 @@ static void sm_save_yourself(SmcConn conn, SmPointer data, gint save_type,
static void sm_die(SmcConn conn, SmPointer data) static void sm_die(SmcConn conn, SmPointer data)
{ {
ob_debug_type(OB_DEBUG_SM, "Die requested\n"); ob_debug_type(OB_DEBUG_SM, "Die requested");
ob_exit(0); ob_exit(0);
} }
static void sm_save_complete(SmcConn conn, SmPointer data) static void sm_save_complete(SmcConn conn, SmPointer data)
{ {
ob_debug_type(OB_DEBUG_SM, "Save complete\n"); ob_debug_type(OB_DEBUG_SM, "Save complete");
} }
static void sm_shutdown_cancelled(SmcConn conn, SmPointer data) static void sm_shutdown_cancelled(SmcConn conn, SmPointer data)
{ {
ob_debug_type(OB_DEBUG_SM, "Shutdown cancelled\n"); ob_debug_type(OB_DEBUG_SM, "Shutdown cancelled");
} }
static gboolean session_save_to_file(const ObSMSaveData *savedata) static gboolean session_save_to_file(const ObSMSaveData *savedata)
@ -498,18 +498,18 @@ static gboolean session_save_to_file(const ObSMSaveData *savedata)
if (!c->sm_client_id) { if (!c->sm_client_id) {
ob_debug_type(OB_DEBUG_SM, "Client %s does not have a " ob_debug_type(OB_DEBUG_SM, "Client %s does not have a "
"session id set\n", "session id set",
c->title); c->title);
if (!c->wm_command) { if (!c->wm_command) {
ob_debug_type(OB_DEBUG_SM, "Client %s does not have an " ob_debug_type(OB_DEBUG_SM, "Client %s does not have an "
"oldskool wm_command set either. We won't " "oldskool wm_command set either. We won't "
"be saving its data\n", "be saving its data",
c->title); c->title);
continue; continue;
} }
} }
ob_debug_type(OB_DEBUG_SM, "Saving state for client %s\n", ob_debug_type(OB_DEBUG_SM, "Saving state for client %s",
c->title); c->title);
prex = c->area.x; prex = c->area.x;
@ -608,20 +608,20 @@ static void session_state_free(ObSessionState *state)
static gboolean session_state_cmp(ObSessionState *s, ObClient *c) static gboolean session_state_cmp(ObSessionState *s, ObClient *c)
{ {
ob_debug_type(OB_DEBUG_SM, "Comparing client against saved state: \n"); ob_debug_type(OB_DEBUG_SM, "Comparing client against saved state: ");
ob_debug_type(OB_DEBUG_SM, " client id: %s \n", c->sm_client_id); ob_debug_type(OB_DEBUG_SM, " client id: %s ", c->sm_client_id);
ob_debug_type(OB_DEBUG_SM, " client name: %s \n", c->name); ob_debug_type(OB_DEBUG_SM, " client name: %s ", c->name);
ob_debug_type(OB_DEBUG_SM, " client class: %s \n", c->class); ob_debug_type(OB_DEBUG_SM, " client class: %s ", c->class);
ob_debug_type(OB_DEBUG_SM, " client role: %s \n", c->role); ob_debug_type(OB_DEBUG_SM, " client role: %s ", c->role);
ob_debug_type(OB_DEBUG_SM, " client type: %d \n", c->type); ob_debug_type(OB_DEBUG_SM, " client type: %d ", c->type);
ob_debug_type(OB_DEBUG_SM, " client command: %s \n", ob_debug_type(OB_DEBUG_SM, " client command: %s ",
c->wm_command ? c->wm_command : "(null)"); c->wm_command ? c->wm_command : "(null)");
ob_debug_type(OB_DEBUG_SM, " state id: %s \n", s->id); ob_debug_type(OB_DEBUG_SM, " state id: %s ", s->id);
ob_debug_type(OB_DEBUG_SM, " state name: %s \n", s->name); ob_debug_type(OB_DEBUG_SM, " state name: %s ", s->name);
ob_debug_type(OB_DEBUG_SM, " state class: %s \n", s->class); ob_debug_type(OB_DEBUG_SM, " state class: %s ", s->class);
ob_debug_type(OB_DEBUG_SM, " state role: %s \n", s->role); ob_debug_type(OB_DEBUG_SM, " state role: %s ", s->role);
ob_debug_type(OB_DEBUG_SM, " state type: %d \n", s->type); ob_debug_type(OB_DEBUG_SM, " state type: %d ", s->type);
ob_debug_type(OB_DEBUG_SM, " state command: %s \n", ob_debug_type(OB_DEBUG_SM, " state command: %s ",
s->command ? s->command : "(null)"); s->command ? s->command : "(null)");
if ((c->sm_client_id && s->id && !strcmp(c->sm_client_id, s->id)) || if ((c->sm_client_id && s->id && !strcmp(c->sm_client_id, s->id)) ||

View file

@ -624,21 +624,20 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
sibling->iconic)) sibling->iconic))
{ {
ob_debug("Setting restack sibling to NULL, they are not on the same " ob_debug("Setting restack sibling to NULL, they are not on the same "
"desktop or it is iconified\n"); "desktop or it is iconified");
sibling = NULL; sibling = NULL;
} }
switch (detail) { switch (detail) {
case Below: case Below:
ob_debug("Restack request Below for client %s sibling %s\n", ob_debug("Restack request Below for client %s sibling %s",
client->title, sibling ? sibling->title : "(all)"); client->title, sibling ? sibling->title : "(all)");
/* just lower it */ /* just lower it */
stacking_lower(CLIENT_AS_WINDOW(client)); stacking_lower(CLIENT_AS_WINDOW(client));
ret = TRUE; ret = TRUE;
break; break;
case BottomIf: case BottomIf:
ob_debug("Restack request BottomIf for client %s sibling " ob_debug("Restack request BottomIf for client %s sibling %s",
"%s\n",
client->title, sibling ? sibling->title : "(all)"); client->title, sibling ? sibling->title : "(all)");
/* if this client occludes sibling (or anything if NULL), then /* if this client occludes sibling (or anything if NULL), then
lower it to the bottom */ lower it to the bottom */
@ -648,13 +647,13 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
} }
break; break;
case Above: case Above:
ob_debug("Restack request Above for client %s sibling %s\n", ob_debug("Restack request Above for client %s sibling %s",
client->title, sibling ? sibling->title : "(all)"); client->title, sibling ? sibling->title : "(all)");
stacking_raise(CLIENT_AS_WINDOW(client)); stacking_raise(CLIENT_AS_WINDOW(client));
ret = TRUE; ret = TRUE;
break; break;
case TopIf: case TopIf:
ob_debug("Restack request TopIf for client %s sibling %s\n", ob_debug("Restack request TopIf for client %s sibling %s",
client->title, sibling ? sibling->title : "(all)"); client->title, sibling ? sibling->title : "(all)");
if (stacking_occluded(client, sibling)) { if (stacking_occluded(client, sibling)) {
stacking_raise(CLIENT_AS_WINDOW(client)); stacking_raise(CLIENT_AS_WINDOW(client));
@ -662,8 +661,7 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
} }
break; break;
case Opposite: case Opposite:
ob_debug("Restack request Opposite for client %s sibling " ob_debug("Restack request Opposite for client %s sibling %s",
"%s\n",
client->title, sibling ? sibling->title : "(all)"); client->title, sibling ? sibling->title : "(all)");
if (stacking_occluded(client, sibling)) { if (stacking_occluded(client, sibling)) {
stacking_raise(CLIENT_AS_WINDOW(client)); stacking_raise(CLIENT_AS_WINDOW(client));

View file

@ -6,6 +6,7 @@ openbox/client_list_combined_menu.c
openbox/client_list_menu.c openbox/client_list_menu.c
openbox/client_menu.c openbox/client_menu.c
openbox/config.c openbox/config.c
openbox/debug.c
openbox/keyboard.c openbox/keyboard.c
openbox/menu.c openbox/menu.c
openbox/mouse.c openbox/mouse.c