[gtk/gbsneto/css-dequeue-fix: 1/3] Revert "cssprovider: Pass a GtkArray around when matching"
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gbsneto/css-dequeue-fix: 1/3] Revert "cssprovider: Pass a GtkArray around when matching"
- Date: Fri, 8 May 2020 13:57:33 +0000 (UTC)
commit fe6cd6d46a9ca4d8a36a9850bd562c8b6cd5247e
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu May 7 15:23:40 2020 -0300
Revert "cssprovider: Pass a GtkArray around when matching"
This reverts commit cdb4d7112593191611d0666c3da82ee2d036b9e0.
gtk/gtkarrayimplprivate.h | 29 ++---------------------------
gtk/gtkcssprovider.c | 23 ++++++++++-------------
gtk/gtkcssselector.c | 33 ++++++++++++++++++---------------
gtk/gtkcssselectorprivate.h | 6 ++----
4 files changed, 32 insertions(+), 59 deletions(-)
---
diff --git a/gtk/gtkarrayimplprivate.h b/gtk/gtkarrayimplprivate.h
index 74c810a842..cfc497e1ab 100644
--- a/gtk/gtkarrayimplprivate.h
+++ b/gtk/gtkarrayimplprivate.h
@@ -30,8 +30,8 @@ gtk_array_init (GtkArray *self,
}
static inline void *
-gtk_array_index (const GtkArray *self,
- guint index)
+gtk_array_index (GtkArray *self,
+ guint index)
{
g_assert (index < self->len);
@@ -68,31 +68,6 @@ gtk_array_add (GtkArray *self,
self->len++; /* We still count self->len */
}
-static inline void
-gtk_array_insert (GtkArray *self,
- guint index,
- void *element)
-{
- if (index >= self->len)
- {
- gtk_array_add (self, element);
- return;
- }
-
- if (G_LIKELY (self->len < self->reserved_size))
- {
- memmove (self->stack_space + index + 1, self->stack_space + index,
- sizeof (void *) * (self->len - index));
- self->stack_space[index] = element;
- self->len++;
- return;
- }
-
- g_assert (self->ptr_array);
- g_ptr_array_insert (self->ptr_array, index, element);
- self->len++;
-}
-
static inline void
gtk_array_free (GtkArray *self,
GDestroyNotify element_free_func)
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 90db5fde50..829e2ec42c 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -391,8 +391,8 @@ gtk_css_provider_init (GtkCssProvider *css_provider)
static void
verify_tree_match_results (GtkCssProvider *provider,
- GtkCssNode *node,
- GtkArray *tree_rules)
+ GtkCssNode *node,
+ GPtrArray *tree_rules)
{
#ifdef VERIFY_TREE
GtkCssProviderPrivate *priv = gtk_css_provider_get_instance_private (provider);
@@ -408,7 +408,7 @@ verify_tree_match_results (GtkCssProvider *provider,
for (j = 0; j < tree_rules->len; j++)
{
- if (ruleset == gtk_array_index (tree_rules, j))
+ if (ruleset == tree_rules->pdata[j])
{
found = TRUE;
break;
@@ -458,22 +458,19 @@ gtk_css_style_provider_lookup (GtkStyleProvider *provider,
GtkCssRuleset *ruleset;
guint j;
int i;
- GtkArray tree_rules_array;
- GtkCssRuleset *rules_stack[32];
+ GPtrArray *tree_rules;
if (_gtk_css_selector_tree_is_empty (priv->tree))
return;
- gtk_array_init (&tree_rules_array, (void**)rules_stack, 32);
- _gtk_css_selector_tree_match_all (priv->tree, filter, node, &tree_rules_array);
-
- if (tree_rules_array.len > 0)
+ tree_rules = _gtk_css_selector_tree_match_all (priv->tree, filter, node);
+ if (tree_rules)
{
- verify_tree_match_results (css_provider, node, &tree_rules_array);
+ verify_tree_match_results (css_provider, node, tree_rules);
- for (i = tree_rules_array.len - 1; i >= 0; i--)
+ for (i = tree_rules->len - 1; i >= 0; i--)
{
- ruleset = gtk_array_index (&tree_rules_array, i);
+ ruleset = tree_rules->pdata[i];
if (ruleset->styles == NULL)
continue;
@@ -493,7 +490,7 @@ gtk_css_style_provider_lookup (GtkStyleProvider *provider,
}
}
- gtk_array_free (&tree_rules_array, NULL);
+ g_ptr_array_free (tree_rules, TRUE);
}
if (change)
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index b5f348d268..5c1572e038 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -152,23 +152,21 @@ gtk_css_selector_tree_get_matches (const GtkCssSelectorTree *tree)
}
static void
-gtk_array_insert_sorted (GtkArray *array,
- gpointer data)
+g_ptr_array_insert_sorted (GPtrArray *array,
+ gpointer data)
{
- guint i;
+ gint i;
for (i = 0; i < array->len; i++)
{
- gpointer elem = gtk_array_index (array, i);
-
- if (data == elem)
+ if (data == array->pdata[i])
return;
- if (data < elem)
+ if (data < array->pdata[i])
break;
}
- gtk_array_insert (array, i, data);
+ g_ptr_array_insert (array, i, data);
}
static inline gboolean
@@ -1877,7 +1875,7 @@ gtk_css_selector_tree_get_change (const GtkCssSelectorTree *tree,
static void
gtk_css_selector_tree_found_match (const GtkCssSelectorTree *tree,
- GtkArray *results)
+ GPtrArray **results)
{
int i;
gpointer *matches;
@@ -1886,8 +1884,11 @@ gtk_css_selector_tree_found_match (const GtkCssSelectorTree *tree,
if (!matches)
return;
+ if (*results == NULL)
+ *results = g_ptr_array_sized_new (16);
+
for (i = 0; matches[i] != NULL; i++)
- gtk_array_insert_sorted (results, matches[i]);
+ g_ptr_array_insert_sorted (*results, matches[i]);
}
static gboolean
@@ -1895,7 +1896,7 @@ gtk_css_selector_tree_match (const GtkCssSelectorTree *tree,
const GtkCountingBloomFilter *filter,
gboolean match_filter,
GtkCssNode *node,
- GtkArray *results)
+ GPtrArray **results)
{
const GtkCssSelectorTree *prev;
GtkCssNode *child;
@@ -1928,20 +1929,22 @@ gtk_css_selector_tree_match (const GtkCssSelectorTree *tree,
return TRUE;
}
-void
+GPtrArray *
_gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree,
const GtkCountingBloomFilter *filter,
- GtkCssNode *node,
- GtkArray *out_tree_rules)
+ GtkCssNode *node)
{
const GtkCssSelectorTree *iter;
+ GPtrArray *results = NULL;
for (iter = tree;
iter != NULL;
iter = gtk_css_selector_tree_get_sibling (iter))
{
- gtk_css_selector_tree_match (iter, filter, FALSE, node, out_tree_rules);
+ gtk_css_selector_tree_match (iter, filter, FALSE, node, &results);
}
+
+ return results;
}
gboolean
diff --git a/gtk/gtkcssselectorprivate.h b/gtk/gtkcssselectorprivate.h
index f635066435..e351beb915 100644
--- a/gtk/gtkcssselectorprivate.h
+++ b/gtk/gtkcssselectorprivate.h
@@ -21,7 +21,6 @@
#include "gtk/gtkcountingbloomfilterprivate.h"
#include "gtk/gtkcsstypesprivate.h"
#include "gtk/gtkcssparserprivate.h"
-#include "gtk/gtkarrayimplprivate.h"
G_BEGIN_DECLS
@@ -43,10 +42,9 @@ int _gtk_css_selector_compare (const GtkCssSelector *a,
const GtkCssSelector *b);
void _gtk_css_selector_tree_free (GtkCssSelectorTree *tree);
-void _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree,
+GPtrArray * _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree,
const GtkCountingBloomFilter *filter,
- GtkCssNode *node,
- GtkArray *out_tree_rules);
+ GtkCssNode *node);
GtkCssChange gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree,
const GtkCountingBloomFilter *filter,
GtkCssNode *node);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]