[ews-app] Run BugzillaPatchFetcher periodically
[WebKit-https.git] / Tools / wpe / patches / glib-revert-wakeup-changes.patch
1 From 94b38beff1347ec4a733199f7a7abdacaa958678 Mon Sep 17 00:00:00 2001
2 From: Philip Withnall <withnall@endlessm.com>
3 Date: Wed, 17 Jan 2018 11:38:50 +0000
4 Subject: gmain: Partial revert of recent wakeup changes to gmain.c
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 This reverts the following commits (but keeps the other recent changes
10 to gmain.c):
11  • e4ee3079c Do not wake up main loop if change is from same thread
12  • 208702404 main: Create a helper function for "owner wakeup" optimization
13  • 0c0469b56 gmain: Signal wakeups if context has never been acquired as well
14  • 9ba95e25b gmain: only signal GWakeup right before or during a blocking poll
15
16 Some combination of them is causing problems with LibreOffice and/or
17 WebKit, and the safest thing to do at the moment is revert them all
18 until we work out what’s going on. The previous revert (4976e8109) was
19 not sufficient (it fixed WebKit, but re-broken LibreOffice).
20
21 By reverting, we gain some spurious wakeups, but avoid dropping
22 necessary wakeups, which is presumably what’s causing problems in the
23 other modules.
24
25 Signed-off-by: Philip Withnall <withnall@endlessm.com>
26
27 https://bugzilla.gnome.org/show_bug.cgi?id=761102
28 ---
29  glib/gmain.c | 33 +++++----------------------------
30  1 file changed, 5 insertions(+), 28 deletions(-)
31
32 diff --git a/glib/gmain.c b/glib/gmain.c
33 index 8ca54de..67102cd 100644
34 --- a/glib/gmain.c
35 +++ b/glib/gmain.c
36 @@ -1118,29 +1118,6 @@ source_remove_from_context (GSource      *source,
37      }
38  }
39  
40 -/* See https://bugzilla.gnome.org/show_bug.cgi?id=761102 for
41 - * the introduction of this.
42 - *
43 - * The main optimization is to avoid waking up the main
44 - * context if a change is made by the current owner.
45 - */
46 -static void
47 -conditional_wakeup (GMainContext *context)
48 -{
49 -  /* We want to signal wakeups in two cases:
50 -   *  1 When the context is owned by another thread
51 -   *  2 When the context owner is NULL (two subcases)
52 -   *   2a Possible if the context has never been acquired
53 -   *   2b Or if the context has no current owner
54 -   *
55 -   * At least case 2a) is necessary to ensure backwards compatibility with
56 -   * qemu's use of GMainContext.
57 -   * https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14
58 -   */
59 -  if (context->owner != G_THREAD_SELF)
60 -    g_wakeup_signal (context->wakeup);
61 -}
62 -
63  static guint
64  g_source_attach_unlocked (GSource      *source,
65                            GMainContext *context,
66 @@ -1187,8 +1164,8 @@ g_source_attach_unlocked (GSource      *source,
67    /* If another thread has acquired the context, wake it up since it
68     * might be in poll() right now.
69     */
70 -  if (do_wakeup)
71 -    conditional_wakeup (context);
72 +  if (do_wakeup && context->owner && context->owner != G_THREAD_SELF)
73 +    g_wakeup_signal (context->wakeup);
74  
75    return source->source_id;
76  }
77 @@ -1878,7 +1855,7 @@ g_source_set_ready_time (GSource *source,
78      {
79        /* Quite likely that we need to change the timeout on the poll */
80        if (!SOURCE_BLOCKED (source))
81 -        conditional_wakeup (context);
82 +        g_wakeup_signal (context->wakeup);
83        UNLOCK_CONTEXT (context);
84      }
85  }
86 @@ -4318,7 +4295,7 @@ g_main_context_add_poll_unlocked (GMainContext *context,
87    context->poll_changed = TRUE;
88  
89    /* Now wake up the main loop if it is waiting in the poll() */
90 -  conditional_wakeup (context);
91 +  g_wakeup_signal (context->wakeup);
92  }
93  
94  /**
95 @@ -4378,7 +4355,7 @@ g_main_context_remove_poll_unlocked (GMainContext *context,
96    context->poll_changed = TRUE;
97  
98    /* Now wake up the main loop if it is waiting in the poll() */
99 -  conditional_wakeup (context);
100 +  g_wakeup_signal (context->wakeup);
101  }
102  
103  /**
104 -- 
105 cgit v0.12
106