[gtk/gbsneto/css-dequeue-fix: 2/3] Revert "cssselector: Use a GtkArray to count exact matches"



commit afa7973c1fce7ea97d6ab57bf6d47aecad895a84
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu May 7 15:28:07 2020 -0300

    Revert "cssselector: Use a GtkArray to count exact matches"
    
    This reverts commit 49960972190401ccbaa5bfa0fcc2ab80482490b0.

 gtk/gtkarrayimplprivate.h |  9 ---------
 gtk/gtkcssselector.c      | 21 ++++++++++-----------
 2 files changed, 10 insertions(+), 20 deletions(-)
---
diff --git a/gtk/gtkarrayimplprivate.h b/gtk/gtkarrayimplprivate.h
index cfc497e1ab..0027aa5b3e 100644
--- a/gtk/gtkarrayimplprivate.h
+++ b/gtk/gtkarrayimplprivate.h
@@ -96,14 +96,5 @@ gtk_array_free (GtkArray       *self,
   g_ptr_array_free (self->ptr_array, TRUE);
 }
 
-static inline void **
-gtk_array_get_data (GtkArray *self)
-{
-  if (G_LIKELY (!self->ptr_array))
-    return self->stack_space;
-
-  return self->ptr_array->pdata;
-}
-
 
 #endif
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index 5c1572e038..1c1d0c4046 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -24,7 +24,6 @@
 
 #include "gtkcssprovider.h"
 #include "gtkstylecontextprivate.h"
-#include "gtkarrayimplprivate.h"
 
 #include <errno.h>
 #if defined(_MSC_VER) && _MSC_VER >= 1500
@@ -2120,8 +2119,7 @@ subdivide_infos (GByteArray                 *array,
   GHashTableIter iter;
   guint max_count;
   gpointer key, value;
-  void *exact_matches_stack[8];
-  GtkArray exact_matches_array;
+  GPtrArray *exact_matches;
   gint32 res;
   guint i;
 
@@ -2163,7 +2161,7 @@ subdivide_infos (GByteArray                 *array,
   matched_infos = g_alloca (sizeof (GtkCssSelectorRuleSetInfo *) * n_infos);
   remaining_infos = g_alloca (sizeof (GtkCssSelectorRuleSetInfo *) * n_infos);
 
-  gtk_array_init (&exact_matches_array, (void**)exact_matches_stack, 8);
+  exact_matches = NULL;
   for (i = 0; i < n_infos; i++)
     {
       GtkCssSelectorRuleSetInfo *info = infos[i];
@@ -2174,7 +2172,9 @@ subdivide_infos (GByteArray                 *array,
          if (info->current_selector == NULL)
            {
              /* Matches current node */
-              gtk_array_add (&exact_matches_array, info->match);
+             if (exact_matches == NULL)
+               exact_matches = g_ptr_array_new ();
+             g_ptr_array_add (exact_matches, info->match);
              if (info->selector_match != NULL)
                *info->selector_match = GUINT_TO_POINTER (tree_offset);
            }
@@ -2191,14 +2191,13 @@ subdivide_infos (GByteArray                 *array,
        }
     }
 
-  if (exact_matches_array.len > 0)
+  if (exact_matches)
     {
-      gtk_array_add (&exact_matches_array, NULL); /* Null terminate */
+      g_ptr_array_add (exact_matches, NULL); /* Null terminate */
       res = array->len;
-      g_byte_array_append (array, (guint8 *)gtk_array_get_data (&exact_matches_array),
-                           exact_matches_array.len * sizeof (gpointer));
-
-      gtk_array_free (&exact_matches_array, NULL);
+      g_byte_array_append (array, (guint8 *)exact_matches->pdata,
+                          exact_matches->len * sizeof (gpointer));
+      g_ptr_array_free (exact_matches, TRUE);
     }
   else
     res = GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]