diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c index 0da859d60..d052b1474 100644 --- a/clutter/clutter/clutter-main.c +++ b/clutter/clutter/clutter-main.c @@ -83,10 +83,6 @@ /* main context */ static ClutterMainContext *ClutterCntx = NULL; -G_LOCK_DEFINE_STATIC (ClutterCntx); - -/* main lock and locking/unlocking functions */ -static GMutex clutter_threads_mutex; /* command line options */ static gboolean clutter_is_initialized = FALSE; @@ -145,12 +141,6 @@ static const GDebugKey clutter_paint_debug_keys[] = { { "damage-region", CLUTTER_DEBUG_PAINT_DAMAGE_REGION }, }; -static inline void -clutter_threads_init_default (void) -{ - g_mutex_init (&clutter_threads_mutex); -} - #define ENVIRONMENT_GROUP "Environment" #define DEBUG_GROUP "Debug" @@ -519,11 +509,7 @@ clutter_main (void) main_loops = g_slist_prepend (main_loops, loop); if (g_main_loop_is_running (main_loops->data)) - { - _clutter_threads_release_lock (); - g_main_loop_run (loop); - _clutter_threads_acquire_lock (); - } + g_main_loop_run (loop); main_loops = g_slist_remove (main_loops, loop); @@ -540,13 +526,9 @@ _clutter_threads_dispatch (gpointer data) ClutterThreadsDispatch *dispatch = data; gboolean ret = FALSE; - _clutter_threads_acquire_lock (); - if (!g_source_is_destroyed (g_main_current_source ())) ret = dispatch->func (dispatch->data); - _clutter_threads_release_lock (); - return ret; } @@ -771,40 +753,6 @@ clutter_threads_add_timeout (guint interval, NULL); } -void -_clutter_threads_acquire_lock (void) -{ - g_mutex_lock (&clutter_threads_mutex); -} - -void -_clutter_threads_release_lock (void) -{ - /* we need to trylock here, in case the lock hasn't been acquired; on - * various systems trying to release a mutex that hasn't been acquired - * will cause a run-time error. trylock() will either fail, in which - * case we can release the lock we own; or it will succeeds, in which - * case we need to release the lock we just acquired. so we ignore the - * returned value. - * - * see: https://bugs.gnome.org/679439 - */ - g_mutex_trylock (&clutter_threads_mutex); - g_mutex_unlock (&clutter_threads_mutex); -} - -void -_clutter_context_lock (void) -{ - G_LOCK (ClutterCntx); -} - -void -_clutter_context_unlock (void) -{ - G_UNLOCK (ClutterCntx); -} - gboolean _clutter_context_is_initialized (void) { @@ -814,8 +762,8 @@ _clutter_context_is_initialized (void) return ClutterCntx->is_initialized; } -static ClutterMainContext * -clutter_context_get_default_unlocked (void) +ClutterMainContext * +_clutter_context_get_default (void) { if (G_UNLIKELY (ClutterCntx == NULL)) { @@ -846,20 +794,6 @@ clutter_context_get_default_unlocked (void) return ClutterCntx; } -ClutterMainContext * -_clutter_context_get_default (void) -{ - ClutterMainContext *retval; - - _clutter_context_lock (); - - retval = clutter_context_get_default_unlocked (); - - _clutter_context_unlock (); - - return retval; -} - static gboolean clutter_arg_direction_cb (const char *key, const char *value, @@ -2170,9 +2104,6 @@ clutter_base_init (void) g_type_init (); #endif - /* initialise the Big Clutter Lockā„¢ if necessary */ - clutter_threads_init_default (); - clutter_graphene_init (); } } @@ -2240,9 +2171,7 @@ clutter_threads_remove_repaint_func (guint handle_id) g_return_if_fail (handle_id > 0); - _clutter_context_lock (); - - context = clutter_context_get_default_unlocked (); + context = _clutter_context_get_default (); l = context->repaint_funcs; while (l != NULL) { @@ -2265,8 +2194,6 @@ clutter_threads_remove_repaint_func (guint handle_id) l = l->next; } - - _clutter_context_unlock (); } /** @@ -2365,9 +2292,7 @@ clutter_threads_add_repaint_func_full (ClutterRepaintFlags flags, g_return_val_if_fail (func != NULL, 0); - _clutter_context_lock (); - - context = clutter_context_get_default_unlocked (); + context = _clutter_context_get_default (); repaint_func = g_slice_new (ClutterRepaintFunction); @@ -2381,8 +2306,6 @@ clutter_threads_add_repaint_func_full (ClutterRepaintFlags flags, context->repaint_funcs = g_list_prepend (context->repaint_funcs, repaint_func); - _clutter_context_unlock (); - return repaint_func->id; } diff --git a/clutter/clutter/clutter-master-clock-default.c b/clutter/clutter/clutter-master-clock-default.c index a6dd3fbc0..031838966 100644 --- a/clutter/clutter/clutter-master-clock-default.c +++ b/clutter/clutter/clutter-master-clock-default.c @@ -413,8 +413,6 @@ clutter_clock_prepare (GSource *source, ClutterMasterClockDefault *master_clock = clock_source->master_clock; int delay; - _clutter_threads_acquire_lock (); - if (G_UNLIKELY (clutter_paint_debug_flags & CLUTTER_DEBUG_CONTINUOUS_REDRAW)) { @@ -430,8 +428,6 @@ clutter_clock_prepare (GSource *source, delay = master_clock_next_frame_delay (master_clock); - _clutter_threads_release_lock (); - *timeout = delay; return delay == 0; @@ -444,9 +440,7 @@ clutter_clock_check (GSource *source) ClutterMasterClockDefault *master_clock = clock_source->master_clock; int delay; - _clutter_threads_acquire_lock (); delay = master_clock_next_frame_delay (master_clock); - _clutter_threads_release_lock (); return delay == 0; } @@ -462,8 +456,6 @@ clutter_clock_dispatch (GSource *source, CLUTTER_NOTE (SCHEDULER, "Master clock [tick]"); - _clutter_threads_acquire_lock (); - COGL_TRACE_BEGIN (ClutterMasterClockTick, "Master Clock (tick)"); /* Get the time to use for this frame */ @@ -499,8 +491,6 @@ clutter_clock_dispatch (GSource *source, COGL_TRACE_END (ClutterMasterClockTick); - _clutter_threads_release_lock (); - return TRUE; } diff --git a/clutter/clutter/clutter-private.h b/clutter/clutter/clutter-private.h index a333d1453..a71eac252 100644 --- a/clutter/clutter/clutter-private.h +++ b/clutter/clutter/clutter-private.h @@ -177,11 +177,6 @@ typedef struct gboolean _clutter_threads_dispatch (gpointer data); void _clutter_threads_dispatch_free (gpointer data); -CLUTTER_EXPORT -void _clutter_threads_acquire_lock (void); -CLUTTER_EXPORT -void _clutter_threads_release_lock (void); - ClutterMainContext * _clutter_context_get_default (void); void _clutter_context_lock (void); void _clutter_context_unlock (void); diff --git a/src/backends/native/meta-seat-native.c b/src/backends/native/meta-seat-native.c index fa984fd1b..d561e322a 100644 --- a/src/backends/native/meta-seat-native.c +++ b/src/backends/native/meta-seat-native.c @@ -885,13 +885,9 @@ meta_event_prepare (GSource *source, { gboolean retval; - _clutter_threads_acquire_lock (); - *timeout = -1; retval = clutter_events_pending (); - _clutter_threads_release_lock (); - return retval; } @@ -901,13 +897,9 @@ meta_event_check (GSource *source) MetaEventSource *event_source = (MetaEventSource *) source; gboolean retval; - _clutter_threads_acquire_lock (); - retval = ((event_source->event_poll_fd.revents & G_IO_IN) || clutter_events_pending ()); - _clutter_threads_release_lock (); - return retval; } @@ -1273,8 +1265,6 @@ meta_event_dispatch (GSource *g_source, MetaSeatNative *seat; ClutterEvent *event; - _clutter_threads_acquire_lock (); - seat = source->seat; /* Don't queue more events if we haven't finished handling the previous batch @@ -1299,7 +1289,7 @@ meta_event_dispatch (GSource *g_source, /* Drop events if we don't have any stage to forward them to */ if (!_clutter_input_device_get_stage (input_device)) - goto out; + return TRUE; /* update the device states *before* the event */ event_state = seat->button_state | @@ -1311,9 +1301,6 @@ meta_event_dispatch (GSource *g_source, _clutter_stage_queue_event (event->any.stage, event, FALSE); } -out: - _clutter_threads_release_lock (); - return TRUE; } static GSourceFuncs event_funcs = { diff --git a/src/backends/x11/meta-event-x11.c b/src/backends/x11/meta-event-x11.c index 19da2235b..6aed4ed3f 100644 --- a/src/backends/x11/meta-event-x11.c +++ b/src/backends/x11/meta-event-x11.c @@ -92,8 +92,6 @@ meta_x11_handle_event (XEvent *xevent) result = CLUTTER_X11_FILTER_CONTINUE; - _clutter_threads_acquire_lock (); - backend = clutter_get_default_backend (); event = clutter_event_new (CLUTTER_NOTHING); @@ -135,8 +133,6 @@ out: if (allocated_event) XFreeEventData (xdisplay, &xevent->xcookie); - _clutter_threads_release_lock (); - return result; }