[metacity/wip/gtk-theme: 35/41] frames: Fix astonishing accidental pointer trickery



commit 87c845b230a5ac71300553aa1017e74595d338cd
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Dec 31 22:31:45 2014 -0800

    frames: Fix astonishing accidental pointer trickery
    
    Whenever we added a frame to the GHashTable, we added the frame itself
    as the value, and a pointer to its storage of the frame window XID,
    as the key.
    
    When we iterated over the hash table, we actually looked up the
    MetaUIFrame in the key, which might seem extraordinarily wrong, but
    eagle-eyed viewers might notice that the XID is the first field in
    MetaUIFrame, so the key and value are actually the same pointer.
    
    Changing the layout of MetaUIFrame at all causes this to go haywire,
    so let's not do this and simply put the MetaUIFrame in the value,
    as expected.

 src/ui/frames.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/src/ui/frames.c b/src/ui/frames.c
index 96fe6bb..9aaf78b 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -2490,7 +2490,7 @@ find_frame_to_draw (MetaFrames *frames,
   MetaUIFrame *frame;
 
   g_hash_table_iter_init (&iter, frames->frames);
-  while (g_hash_table_iter_next (&iter, (gpointer *) &frame, NULL))
+  while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &frame))
     if (gtk_cairo_should_draw_window (cr, frame->window))
       return frame;
 


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