all repos — openbox @ a2f2fefeffc74e93504588f9545507814857723e

openbox fork - make it a bit more like ryudo

add a client destructor to frame.c so it doesn't try to keep flashing a free'd frame
Mikael Magnusson mikachu@comhem.se
commit

a2f2fefeffc74e93504588f9545507814857723e

parent

83a0303dd75ef0487fdd53e810914f21fdd3e459

4 files changed, 23 insertions(+), 0 deletions(-)

jump to
M openbox/event.copenbox/event.c

@@ -175,6 +175,7 @@ IceRemoveConnectionWatch(ice_watch, NULL);

#endif client_remove_destructor(focus_delay_client_dest); + client_remove_destructor(event_client_dest); XFreeModifiermap(modmap); }
M openbox/frame.copenbox/frame.c

@@ -43,6 +43,7 @@

static void layout_title(ObFrame *self); static void flash_done(gpointer data); static gboolean flash_timeout(gpointer data); +static void flash_client_dest(ObClient *client, gpointer data); static void set_theme_statics(ObFrame *self); static void free_theme_statics(ObFrame *self);

@@ -54,6 +55,18 @@ return XCreateWindow(ob_display, parent, 0, 0, 1, 1, 0,

RrDepth(ob_rr_inst), InputOutput, RrVisual(ob_rr_inst), mask, attrib); +} + +void frame_startup(gboolean reconfig) +{ + if (reconfig) return; + client_add_destructor(flash_client_dest, NULL); +} + +void frame_shutdown(gboolean reconfig) +{ + if (reconfig) return; + client_remove_destructor(flash_client_dest); } ObFrame *frame_new()

@@ -906,6 +919,11 @@ self->focused = FALSE;

} return TRUE; /* go again */ +} + +static void flash_client_dest(ObClient *client, gpointer data) +{ + ob_main_loop_timeout_remove_data(ob_main_loop, flash_timeout, client); } void frame_flash_start(ObFrame *self)
M openbox/frame.hopenbox/frame.h

@@ -141,6 +141,8 @@ gboolean flash_on;

GTimeVal flash_end; }; +void frame_startup(gboolean reconfig); +void frame_shutdown(gboolean reconfig); ObFrame *frame_new(); void frame_show(ObFrame *self); void frame_hide(ObFrame *self);
M openbox/openbox.copenbox/openbox.c

@@ -248,6 +248,7 @@ screen_startup(reconfigure);

grab_startup(reconfigure); group_startup(reconfigure); client_startup(reconfigure); + frame_startup(reconfigure); dock_startup(reconfigure); moveresize_startup(reconfigure); keyboard_startup(reconfigure);

@@ -284,6 +285,7 @@ mouse_shutdown(reconfigure);

keyboard_shutdown(reconfigure); moveresize_shutdown(reconfigure); dock_shutdown(reconfigure); + frame_shutdown(reconfigure); client_shutdown(reconfigure); group_shutdown(reconfigure); grab_shutdown(reconfigure);