Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.0:Staging:D
glib2
glib2-gmain-partial-revert.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File glib2-gmain-partial-revert.patch of Package glib2
From 94b38beff1347ec4a733199f7a7abdacaa958678 Mon Sep 17 00:00:00 2001 From: Philip Withnall <withnall@endlessm.com> Date: Wed, 17 Jan 2018 11:38:50 +0000 Subject: gmain: Partial revert of recent wakeup changes to gmain.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts the following commits (but keeps the other recent changes to gmain.c): • e4ee3079c Do not wake up main loop if change is from same thread • 208702404 main: Create a helper function for "owner wakeup" optimization • 0c0469b56 gmain: Signal wakeups if context has never been acquired as well • 9ba95e25b gmain: only signal GWakeup right before or during a blocking poll Some combination of them is causing problems with LibreOffice and/or WebKit, and the safest thing to do at the moment is revert them all until we work out what’s going on. The previous revert (4976e8109) was not sufficient (it fixed WebKit, but re-broken LibreOffice). By reverting, we gain some spurious wakeups, but avoid dropping necessary wakeups, which is presumably what’s causing problems in the other modules. Signed-off-by: Philip Withnall <withnall@endlessm.com> https://bugzilla.gnome.org/show_bug.cgi?id=761102 --- glib/gmain.c | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/glib/gmain.c b/glib/gmain.c index 8ca54de..67102cd 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -1118,29 +1118,6 @@ source_remove_from_context (GSource *source, } } -/* See https://bugzilla.gnome.org/show_bug.cgi?id=761102 for - * the introduction of this. - * - * The main optimization is to avoid waking up the main - * context if a change is made by the current owner. - */ -static void -conditional_wakeup (GMainContext *context) -{ - /* We want to signal wakeups in two cases: - * 1 When the context is owned by another thread - * 2 When the context owner is NULL (two subcases) - * 2a Possible if the context has never been acquired - * 2b Or if the context has no current owner - * - * At least case 2a) is necessary to ensure backwards compatibility with - * qemu's use of GMainContext. - * https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14 - */ - if (context->owner != G_THREAD_SELF) - g_wakeup_signal (context->wakeup); -} - static guint g_source_attach_unlocked (GSource *source, GMainContext *context, @@ -1187,8 +1164,8 @@ g_source_attach_unlocked (GSource *source, /* If another thread has acquired the context, wake it up since it * might be in poll() right now. */ - if (do_wakeup) - conditional_wakeup (context); + if (do_wakeup && context->owner && context->owner != G_THREAD_SELF) + g_wakeup_signal (context->wakeup); return source->source_id; } @@ -1878,7 +1855,7 @@ g_source_set_ready_time (GSource *source, { /* Quite likely that we need to change the timeout on the poll */ if (!SOURCE_BLOCKED (source)) - conditional_wakeup (context); + g_wakeup_signal (context->wakeup); UNLOCK_CONTEXT (context); } } @@ -4318,7 +4295,7 @@ g_main_context_add_poll_unlocked (GMainContext *context, context->poll_changed = TRUE; /* Now wake up the main loop if it is waiting in the poll() */ - conditional_wakeup (context); + g_wakeup_signal (context->wakeup); } /** @@ -4378,7 +4355,7 @@ g_main_context_remove_poll_unlocked (GMainContext *context, context->poll_changed = TRUE; /* Now wake up the main loop if it is waiting in the poll() */ - conditional_wakeup (context); + g_wakeup_signal (context->wakeup); } /** -- cgit v0.12
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor