summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-04-22 02:49:52 +0000
committerDana Jansens <danakj@orodu.net>2007-04-22 02:49:52 +0000
commit57ffea1123d87a6d5b0ae92b4f4715222d2a1d23 (patch)
tree895ab1362b027b142b0c0f632987a728ed9a1c37
parent98b021ff0cc1bb8e5e6e159b9ee1b62a842ed7b8 (diff)
fix segfaults
-rw-r--r--openbox/event.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/openbox/event.c b/openbox/event.c
index 9c7f9cbc..ced93e04 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -79,7 +79,6 @@ static void event_handle_dockapp(ObDockApp *app, XEvent *e);
static void event_handle_client(ObClient *c, XEvent *e);
static void event_handle_group(ObGroup *g, XEvent *e);
-static void focus_delay_destroy(gpointer data);
static gboolean focus_delay_func(gpointer data);
static void focus_delay_client_dest(ObClient *client, gpointer data);
@@ -636,9 +635,12 @@ void event_enter_client(ObClient *client)
ob_main_loop_timeout_add(ob_main_loop,
config_focus_delay,
focus_delay_func,
- NULL, focus_delay_destroy);
- } else
+ NULL, NULL);
+ } else {
+ focus_delay_data.client = client;
+ focus_delay_data.time = event_curtime;
focus_delay_func(NULL);
+ }
}
}
@@ -758,10 +760,11 @@ static void event_handle_client(ObClient *client, XEvent *e)
frame_adjust_state(client->frame);
break;
case OB_FRAME_CONTEXT_FRAME:
- if (config_focus_follow && config_focus_delay)
- ob_main_loop_timeout_remove_data(ob_main_loop,
- focus_delay_func,
- client, TRUE);
+ if (config_focus_follow && config_focus_delay &&
+ focus_delay_data.client == client)
+ {
+ event_halt_focus_delay();
+ }
break;
default:
break;
@@ -1332,12 +1335,6 @@ static gboolean menu_hide_delay_func(gpointer data)
return FALSE; /* no repeat */
}
-static void focus_delay_destroy(gpointer data)
-{
- focus_delay_data.client = NULL;
- focus_delay_data.time = CurrentTime;
-}
-
static gboolean focus_delay_func(gpointer data)
{
Time old = event_curtime;
@@ -1353,7 +1350,7 @@ static gboolean focus_delay_func(gpointer data)
static void focus_delay_client_dest(ObClient *client, gpointer data)
{
if (focus_delay_data.client == client)
- ob_main_loop_timeout_remove(ob_main_loop, focus_delay_func);
+ event_halt_focus_delay();
}
static void event_client_dest(ObClient *client, gpointer data)
@@ -1364,6 +1361,7 @@ static void event_client_dest(ObClient *client, gpointer data)
void event_halt_focus_delay()
{
+ focus_delay_data.client = NULL;
ob_main_loop_timeout_remove(ob_main_loop, focus_delay_func);
}