discomfitor pushed a commit to branch master.
commit d544048b0edc5b0a4b5f16e8e737409d7e0bfc84
Author: Mike Blumenkrantz <[email protected]>
Date: Fri Jul 26 11:05:17 2013 +0100
add delete flag to e_border to alert us that this client window is dead
---
src/bin/e_border.c | 7 +++++--
src/bin/e_border.h | 1 +
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/bin/e_border.c b/src/bin/e_border.c
index 2d1bd59..efe4907 100644
--- a/src/bin/e_border.c
+++ b/src/bin/e_border.c
@@ -4959,7 +4959,7 @@ _e_border_del(E_Border *bd)
ecore_timer_del(bd->raise_timer);
bd->raise_timer = NULL;
}
- if (!bd->already_unparented)
+ if ((!bd->already_unparented) && (!bd->destroyed))
{
ecore_x_window_reparent(bd->client.win,
bd->zone->container->manager->root,
@@ -5069,7 +5069,7 @@ _e_border_cb_window_destroy(void *data __UNUSED__,
e = ev;
bd = e_border_find_by_client_window(e->win);
if (!bd) return ECORE_CALLBACK_PASS_ON;
- e_border_hide(bd, 0);
+ bd->destroyed = 1;
e_object_del(E_OBJECT(bd));
return ECORE_CALLBACK_PASS_ON;
}
@@ -5130,6 +5130,9 @@ _e_border_cb_window_hide(void *data __UNUSED__,
else
{
// printf(" hide2\n");
+
+ if (bd->delete_requested)
+ bd->destroyed = 1;
e_border_hide(bd, 0);
e_object_del(E_OBJECT(bd));
}
diff --git a/src/bin/e_border.h b/src/bin/e_border.h
index de62ab9..183d6e1 100644
--- a/src/bin/e_border.h
+++ b/src/bin/e_border.h
@@ -561,6 +561,7 @@ struct _E_Border
unsigned int internal_no_reopen : 1;
unsigned int stolen : 1;
Eina_Bool theme_shadow : 1;
+ Eina_Bool destroyed : 1;
Ecore_Evas *internal_ecore_evas;
--
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk