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.c252
1 files changed, 0 insertions, 252 deletions
diff --git a/lib/ephy-node.c b/lib/ephy-node.c
index 950033267..131aa1e9f 100644
--- a/lib/ephy-node.c
+++ b/lib/ephy-node.c
@@ -32,7 +32,6 @@
#include "ephy-node.h"
#include "ephy-string.h"
-#include "ephy-thread-helpers.h"
typedef struct
{
@@ -51,8 +50,6 @@ typedef struct
struct EphyNode
{
- GStaticRWLock *lock;
-
int ref_count;
gulong id;
@@ -74,41 +71,6 @@ typedef struct
va_list valist;
} ENESCData;
-/* evillish hacks to temporarily readlock->writelock and v.v. */
-static inline void
-write_lock_to_read_lock (EphyNode *node)
-{
- g_static_mutex_lock (&node->lock->mutex);
- node->lock->read_counter++;
- g_static_mutex_unlock (&node->lock->mutex);
-
- g_static_rw_lock_writer_unlock (node->lock);
-}
-
-static inline void
-read_lock_to_write_lock (EphyNode *node)
-{
- g_static_mutex_lock (&node->lock->mutex);
- node->lock->read_counter--;
- g_static_mutex_unlock (&node->lock->mutex);
-
- g_static_rw_lock_writer_lock (node->lock);
-}
-
-static inline void
-lock_gdk (void)
-{
- if (ephy_thread_helpers_in_main_thread () == FALSE)
- GDK_THREADS_ENTER ();
-}
-
-static inline void
-unlock_gdk (void)
-{
- if (ephy_thread_helpers_in_main_thread () == FALSE)
- GDK_THREADS_LEAVE ();
-}
-
static gboolean
int_equal (gconstpointer a,
gconstpointer b)
@@ -206,9 +168,6 @@ ephy_node_finalize (EphyNode *node)
g_ptr_array_free (node->children, TRUE);
- g_static_rw_lock_free (node->lock);
- g_free (node->lock);
-
g_free (node);
}
@@ -239,22 +198,13 @@ real_remove_child (EphyNode *node,
borked_node = g_ptr_array_index (node->children, i);
- g_static_rw_lock_writer_lock (borked_node->lock);
borked_node_info = g_hash_table_lookup (borked_node->parents,
GINT_TO_POINTER (node->id));
borked_node_info->index--;
-
- g_static_rw_lock_writer_unlock (borked_node->lock);
}
- write_lock_to_read_lock (node);
- write_lock_to_read_lock (child);
-
ephy_node_emit_signal (node, EPHY_NODE_CHILD_REMOVED, child, old_index);
-
- read_lock_to_write_lock (node);
- read_lock_to_write_lock (child);
}
if (remove_from_child) {
@@ -268,11 +218,7 @@ remove_child (long id,
EphyNodeParent *node_info,
EphyNode *node)
{
- g_static_rw_lock_writer_lock (node_info->node->lock);
-
real_remove_child (node_info->node, node, TRUE, FALSE);
-
- g_static_rw_lock_writer_unlock (node_info->node->lock);
}
static void
@@ -300,14 +246,8 @@ 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 */
g_hash_table_foreach (node->parents,
(GHFunc) remove_child,
@@ -318,22 +258,14 @@ ephy_node_dispose (EphyNode *node)
child = g_ptr_array_index (node->children, i);
- g_static_rw_lock_writer_lock (child->lock);
-
real_remove_child (node, child, FALSE, TRUE);
-
- g_static_rw_lock_writer_unlock (child->lock);
}
- g_static_rw_lock_writer_unlock (node->lock);
-
g_hash_table_foreach (node->signals,
(GHFunc) unref_signal_objects,
node);
_ephy_node_db_remove_id (node->db, node->id);
-
- unlock_gdk ();
}
EphyNode *
@@ -357,9 +289,6 @@ ephy_node_new_with_id (EphyNodeDb *db, gulong reserved_id)
node = g_new0 (EphyNode, 1);
- node->lock = g_new0 (GStaticRWLock, 1);
- g_static_rw_lock_init (node->lock);
-
node->ref_count = 0;
node->id = reserved_id;
@@ -401,12 +330,8 @@ ephy_node_get_id (EphyNode *node)
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
- g_static_rw_lock_reader_lock (node->lock);
-
ret = node->id;
- g_static_rw_lock_reader_unlock (node->lock);
-
return ret;
}
@@ -415,11 +340,7 @@ ephy_node_ref (EphyNode *node)
{
g_return_if_fail (EPHY_IS_NODE (node));
- g_static_rw_lock_writer_lock (node->lock);
-
node->ref_count++;
-
- g_static_rw_lock_writer_unlock (node->lock);
}
void
@@ -427,44 +348,20 @@ ephy_node_unref (EphyNode *node)
{
g_return_if_fail (EPHY_IS_NODE (node));
- g_static_rw_lock_writer_lock (node->lock);
-
node->ref_count--;
if (node->ref_count <= 0) {
ephy_node_dispose (node);
ephy_node_finalize (node);
- } else {
- g_static_rw_lock_writer_unlock (node->lock);
}
}
-void
-ephy_node_freeze (EphyNode *node)
-{
- g_return_if_fail (EPHY_IS_NODE (node));
-
- g_static_rw_lock_reader_lock (node->lock);
-}
-
-void
-ephy_node_thaw (EphyNode *node)
-{
- g_return_if_fail (EPHY_IS_NODE (node));
-
- g_static_rw_lock_reader_unlock (node->lock);
-}
-
static void
child_changed (gulong id,
EphyNodeParent *node_info,
EphyNode *node)
{
- g_static_rw_lock_reader_lock (node_info->node->lock);
-
ephy_node_emit_signal (node_info->node, EPHY_NODE_CHILD_CHANGED, node);
-
- g_static_rw_lock_reader_unlock (node_info->node->lock);
}
static inline void
@@ -498,25 +395,15 @@ ephy_node_set_property (EphyNode *node,
g_return_if_fail (property_id >= 0);
g_return_if_fail (value != NULL);
- lock_gdk ();
-
- g_static_rw_lock_writer_lock (node->lock);
-
new = g_new0 (GValue, 1);
g_value_init (new, G_VALUE_TYPE (value));
g_value_copy (value, new);
real_set_property (node, property_id, new);
- write_lock_to_read_lock (node);
-
g_hash_table_foreach (node->parents,
(GHFunc) child_changed,
node);
-
- g_static_rw_lock_reader_unlock (node->lock);
-
- unlock_gdk ();
}
gboolean
@@ -530,24 +417,18 @@ ephy_node_get_property (EphyNode *node,
g_return_val_if_fail (property_id >= 0, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return FALSE;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return FALSE;
}
g_value_init (value, G_VALUE_TYPE (ret));
g_value_copy (ret, value);
- g_static_rw_lock_reader_unlock (node->lock);
-
return TRUE;
}
@@ -561,23 +442,17 @@ ephy_node_get_property_string (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), NULL);
g_return_val_if_fail (property_id >= 0, NULL);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return NULL;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return NULL;
}
retval = g_value_get_string (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -591,23 +466,17 @@ ephy_node_get_property_boolean (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), FALSE);
g_return_val_if_fail (property_id >= 0, FALSE);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return FALSE;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return FALSE;
}
retval = g_value_get_boolean (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -621,23 +490,17 @@ ephy_node_get_property_long (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
g_return_val_if_fail (property_id >= 0, -1);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
retval = g_value_get_long (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -651,23 +514,17 @@ ephy_node_get_property_int (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
g_return_val_if_fail (property_id >= 0, -1);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
retval = g_value_get_int (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -681,23 +538,17 @@ ephy_node_get_property_double (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
g_return_val_if_fail (property_id >= 0, -1);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
retval = g_value_get_double (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -711,23 +562,17 @@ ephy_node_get_property_float (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
g_return_val_if_fail (property_id >= 0, -1);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return -1;
}
retval = g_value_get_float (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -741,23 +586,17 @@ ephy_node_get_property_node (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), NULL);
g_return_val_if_fail (property_id >= 0, NULL);
- g_static_rw_lock_reader_lock (node->lock);
-
if (property_id >= node->properties->len) {
- g_static_rw_lock_reader_unlock (node->lock);
return NULL;
}
ret = g_ptr_array_index (node->properties, property_id);
if (ret == NULL) {
- g_static_rw_lock_reader_unlock (node->lock);
return NULL;
}
retval = g_value_get_pointer (ret);
- g_static_rw_lock_reader_unlock (node->lock);
-
return retval;
}
@@ -771,13 +610,9 @@ save_parent (gulong id,
parent_xml_node = xmlNewChild (xml_node, NULL, "parent", NULL);
- g_static_rw_lock_reader_lock (node_info->node->lock);
-
xml = g_strdup_printf ("%ld", node_info->node->id);
xmlSetProp (parent_xml_node, "id", xml);
g_free (xml);
-
- g_static_rw_lock_reader_unlock (node_info->node->lock);
}
void
@@ -792,8 +627,6 @@ ephy_node_save_to_xml (EphyNode *node,
g_return_if_fail (EPHY_IS_NODE (node));
g_return_if_fail (parent_xml_node != NULL);
- g_static_rw_lock_reader_lock (node->lock);
-
xml_node = xmlNewChild (parent_xml_node, NULL, "node", NULL);
xml = g_strdup_printf ("%ld", node->id);
@@ -857,13 +690,10 @@ ephy_node_save_to_xml (EphyNode *node,
g_assert (prop_node != NULL);
- g_static_rw_lock_reader_lock (prop_node->lock);
-
xml = g_strdup_printf ("%ld", prop_node->id);
xmlNodeSetContent (value_xml_node, xml);
g_free (xml);
- g_static_rw_lock_reader_unlock (prop_node->lock);
break;
}
default:
@@ -875,8 +705,6 @@ ephy_node_save_to_xml (EphyNode *node,
g_hash_table_foreach (node->parents,
(GHFunc) save_parent,
xml_node);
-
- g_static_rw_lock_reader_unlock (node->lock);
}
static inline void
@@ -901,9 +729,6 @@ real_add_child (EphyNode *node,
node_info);
}
-/* this function assumes it's safe to not lock anything while loading,
- * this is at least true for the case where we're loading the library xml file
- * from the main loop */
EphyNode *
ephy_node_new_from_xml (EphyNodeDb *db, xmlNodePtr xml_node)
{
@@ -1007,43 +832,20 @@ void
ephy_node_add_child (EphyNode *node,
EphyNode *child)
{
- lock_gdk ();
-
g_return_if_fail (EPHY_IS_NODE (node));
- g_static_rw_lock_writer_lock (node->lock);
- g_static_rw_lock_writer_lock (child->lock);
-
real_add_child (node, child);
- write_lock_to_read_lock (node);
- write_lock_to_read_lock (child);
-
ephy_node_emit_signal (node, EPHY_NODE_CHILD_ADDED, child);
-
- g_static_rw_lock_reader_unlock (node->lock);
- g_static_rw_lock_reader_unlock (child->lock);
-
- unlock_gdk ();
}
void
ephy_node_remove_child (EphyNode *node,
EphyNode *child)
{
- lock_gdk ();
-
g_return_if_fail (EPHY_IS_NODE (node));
- g_static_rw_lock_writer_lock (node->lock);
- g_static_rw_lock_writer_lock (child->lock);
-
real_remove_child (node, child, TRUE, TRUE);
-
- g_static_rw_lock_writer_unlock (node->lock);
- g_static_rw_lock_writer_unlock (child->lock);
-
- unlock_gdk ();
}
gboolean
@@ -1054,15 +856,9 @@ ephy_node_has_child (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), FALSE);
- g_static_rw_lock_reader_lock (node->lock);
- g_static_rw_lock_reader_lock (child->lock);
-
ret = (g_hash_table_lookup (child->parents,
GINT_TO_POINTER (node->id)) != NULL);
- g_static_rw_lock_reader_unlock (node->lock);
- g_static_rw_lock_reader_unlock (child->lock);
-
return ret;
}
@@ -1094,10 +890,6 @@ ephy_node_sort_children (EphyNode *node,
g_return_if_fail (EPHY_IS_NODE (node));
g_return_if_fail (compare_func != NULL);
- lock_gdk ();
-
- g_static_rw_lock_writer_lock (node->lock);
-
newkids = g_ptr_array_new ();
g_ptr_array_set_size (newkids, node->children->len);
@@ -1127,15 +919,9 @@ ephy_node_sort_children (EphyNode *node,
g_ptr_array_free (node->children, FALSE);
node->children = newkids;
- write_lock_to_read_lock (node);
-
ephy_node_emit_signal (node, EPHY_NODE_CHILDREN_REORDERED, new_order);
g_free (new_order);
-
- g_static_rw_lock_reader_unlock (node->lock);
-
- unlock_gdk ();
}
void
@@ -1148,10 +934,6 @@ ephy_node_reorder_children (EphyNode *node,
g_return_if_fail (EPHY_IS_NODE (node));
g_return_if_fail (new_order != NULL);
- lock_gdk ();
-
- g_static_rw_lock_writer_lock (node->lock);
-
newkids = g_ptr_array_new ();
g_ptr_array_set_size (newkids, node->children->len);
@@ -1171,13 +953,7 @@ ephy_node_reorder_children (EphyNode *node,
g_ptr_array_free (node->children, FALSE);
node->children = newkids;
- write_lock_to_read_lock (node);
-
ephy_node_emit_signal (node, EPHY_NODE_CHILDREN_REORDERED, new_order);
-
- g_static_rw_lock_reader_unlock (node->lock);
-
- unlock_gdk ();
}
GPtrArray *
@@ -1185,8 +961,6 @@ ephy_node_get_children (EphyNode *node)
{
g_return_val_if_fail (EPHY_IS_NODE (node), NULL);
- g_static_rw_lock_reader_lock (node->lock);
-
return node->children;
}
@@ -1197,12 +971,8 @@ ephy_node_get_n_children (EphyNode *node)
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
- g_static_rw_lock_reader_lock (node->lock);
-
ret = node->children->len;
- g_static_rw_lock_reader_unlock (node->lock);
-
return ret;
}
@@ -1215,16 +985,12 @@ ephy_node_get_nth_child (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), NULL);
g_return_val_if_fail (n >= 0, NULL);
- g_static_rw_lock_reader_lock (node->lock);
-
if (n < node->children->len) {
ret = g_ptr_array_index (node->children, n);
} else {
ret = NULL;
}
- g_static_rw_lock_reader_unlock (node->lock);
-
return ret;
}
@@ -1253,14 +1019,8 @@ ephy_node_get_child_index (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), -1);
g_return_val_if_fail (EPHY_IS_NODE (child), -1);
- g_static_rw_lock_reader_lock (node->lock);
- g_static_rw_lock_reader_lock (child->lock);
-
ret = ephy_node_real_get_child_index (node, child);
- g_static_rw_lock_reader_unlock (node->lock);
- g_static_rw_lock_reader_unlock (child->lock);
-
return ret;
}
@@ -1274,9 +1034,6 @@ ephy_node_get_next_child (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), NULL);
g_return_val_if_fail (EPHY_IS_NODE (child), NULL);
- g_static_rw_lock_reader_lock (node->lock);
- g_static_rw_lock_reader_lock (child->lock);
-
idx = get_child_index_real (node, child);
if ((idx + 1) < node->children->len) {
@@ -1285,9 +1042,6 @@ ephy_node_get_next_child (EphyNode *node,
ret = NULL;
}
- g_static_rw_lock_reader_unlock (node->lock);
- g_static_rw_lock_reader_unlock (child->lock);
-
return ret;
}
@@ -1301,9 +1055,6 @@ ephy_node_get_previous_child (EphyNode *node,
g_return_val_if_fail (EPHY_IS_NODE (node), NULL);
g_return_val_if_fail (EPHY_IS_NODE (child), NULL);
- g_static_rw_lock_reader_lock (node->lock);
- g_static_rw_lock_reader_lock (child->lock);
-
idx = get_child_index_real (node, child);
if ((idx - 1) >= 0) {
@@ -1312,9 +1063,6 @@ ephy_node_get_previous_child (EphyNode *node,
ret = NULL;
}
- g_static_rw_lock_reader_unlock (node->lock);
- g_static_rw_lock_reader_unlock (child->lock);
-
return ret;
}