aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ephy-node.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ephy-node.c')
-rw-r--r--lib/ephy-node.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/ephy-node.c b/lib/ephy-node.c
index aaea35ef2..91110b565 100644
--- a/lib/ephy-node.c
+++ b/lib/ephy-node.c
@@ -122,7 +122,7 @@ callback (long id, EphyNodeSignalData *data, gpointer *user_data)
switch (data->type)
{
- case EPHY_NODE_DESTROYED:
+ case EPHY_NODE_DESTROY:
case EPHY_NODE_RESTORED:
data->callback (data->node, data->data);
break;
@@ -281,6 +281,12 @@ ephy_node_dispose (EphyNode *node)
{
guint i;
+ write_lock_to_read_lock (node);
+
+ ephy_node_emit_signal (node, EPHY_NODE_DESTROY);
+
+ read_lock_to_write_lock (node);
+
lock_gdk ();
/* remove from DAG */
@@ -302,8 +308,6 @@ ephy_node_dispose (EphyNode *node)
g_static_rw_lock_writer_unlock (node->lock);
- ephy_node_emit_signal (node, EPHY_NODE_DESTROYED);
-
g_hash_table_foreach (node->signals,
(GHFunc) unref_signal_objects,
node);