mirror of
https://github.com/brl/mutter.git
synced 2024-11-26 10:00:45 -05:00
Deprecate clutter_threads_init()
GLib deprecated g_thread_init(), and threading support is initialized by GObject, so Clutter already runs with threading support enabled. We can drop the clutter_threads_init() call requirement, and initialize the Big Clutter Lock™ on clutter_init(). This reduces the things that have to be done when dealing with threads with Clutter, and the things that can possibly go wrong.
This commit is contained in:
parent
32b8217027
commit
7e3a75c66b
@ -34,7 +34,7 @@
|
||||
* <para>Clutter is <emphasis>thread-aware</emphasis>: all operations
|
||||
* performed by Clutter are assumed to be under the big Clutter lock,
|
||||
* which is created when the threading is initialized through
|
||||
* clutter_threads_init().</para>
|
||||
* clutter_init().</para>
|
||||
* <example id="example-Thread-Init">
|
||||
* <title>Thread Initialization</title>
|
||||
* <para>The code below shows how to correctly initialize Clutter
|
||||
@ -44,12 +44,6 @@
|
||||
* int
|
||||
* main (int argc, char *argv[])
|
||||
* {
|
||||
* /* initialize GLib's threading support */
|
||||
* g_thread_init (NULL);
|
||||
*
|
||||
* /* initialize Clutter's threading support */
|
||||
* clutter_threads_init ();
|
||||
*
|
||||
* /* initialize Clutter */
|
||||
* clutter_init (&argc, &argv);
|
||||
*
|
||||
@ -195,6 +189,30 @@ static const GDebugKey clutter_profile_keys[] = {
|
||||
};
|
||||
#endif /* CLUTTER_ENABLE_DEBUG */
|
||||
|
||||
static void
|
||||
clutter_threads_impl_lock (void)
|
||||
{
|
||||
g_mutex_lock (&clutter_threads_mutex);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_threads_impl_unlock (void)
|
||||
{
|
||||
g_mutex_unlock (&clutter_threads_mutex);
|
||||
}
|
||||
|
||||
static inline void
|
||||
clutter_threads_init_default (void)
|
||||
{
|
||||
g_mutex_init (&clutter_threads_mutex);
|
||||
|
||||
if (clutter_threads_lock == NULL)
|
||||
clutter_threads_lock = clutter_threads_impl_lock;
|
||||
|
||||
if (clutter_threads_unlock == NULL)
|
||||
clutter_threads_unlock = clutter_threads_impl_unlock;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_get_show_fps:
|
||||
*
|
||||
@ -691,18 +709,6 @@ clutter_main (void)
|
||||
CLUTTER_TIMER_STOP (uprof_get_mainloop_context (), mainloop_timer);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_threads_impl_lock (void)
|
||||
{
|
||||
g_mutex_lock (&clutter_threads_mutex);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_threads_impl_unlock (void)
|
||||
{
|
||||
g_mutex_unlock (&clutter_threads_mutex);
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_threads_init:
|
||||
*
|
||||
@ -717,15 +723,13 @@ clutter_threads_impl_unlock (void)
|
||||
* It is safe to call this function multiple times.
|
||||
*
|
||||
* Since: 0.4
|
||||
*
|
||||
* Deprecated: 1.10: This function does not do anything. Threading support
|
||||
* is initialized when Clutter is initialized.
|
||||
*/
|
||||
void
|
||||
clutter_threads_init (void)
|
||||
{
|
||||
if (clutter_threads_lock == NULL)
|
||||
clutter_threads_lock = clutter_threads_impl_lock;
|
||||
|
||||
if (clutter_threads_unlock == NULL)
|
||||
clutter_threads_unlock = clutter_threads_impl_unlock;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2356,6 +2360,9 @@ clutter_base_init (void)
|
||||
|
||||
/* initialise GLib type system */
|
||||
g_type_init ();
|
||||
|
||||
/* initialise the Big Clutter Lock™ if necessary */
|
||||
clutter_threads_init_default ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,10 @@ gulong clutter_get_timestamp (void);
|
||||
gboolean clutter_get_accessibility_enabled (void);
|
||||
|
||||
/* Threading functions */
|
||||
#ifndef CLUTTER_DISABLE_DEPRECATED
|
||||
void clutter_threads_init (void);
|
||||
#endif
|
||||
|
||||
void clutter_threads_enter (void);
|
||||
void clutter_threads_leave (void);
|
||||
void clutter_threads_set_lock_functions (GCallback enter_fn,
|
||||
|
@ -120,8 +120,6 @@ test_texture_async_main (int argc, char *argv[])
|
||||
{
|
||||
gchar *path;
|
||||
|
||||
clutter_threads_init ();
|
||||
|
||||
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
||||
return 1;
|
||||
|
||||
@ -140,7 +138,9 @@ test_texture_async_main (int argc, char *argv[])
|
||||
task, path,
|
||||
cleanup_task);
|
||||
|
||||
clutter_threads_enter ();
|
||||
clutter_main ();
|
||||
clutter_threads_leave ();
|
||||
|
||||
g_free (path);
|
||||
|
||||
|
@ -10,8 +10,6 @@ test_texture_material_main (int argc, char *argv[])
|
||||
ClutterLayoutManager *manager;
|
||||
int i;
|
||||
|
||||
g_thread_init (NULL);
|
||||
clutter_threads_init ();
|
||||
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
||||
return 1;
|
||||
|
||||
|
@ -188,8 +188,6 @@ test_threads_main (int argc, char *argv[])
|
||||
{ 400, 150 }
|
||||
};
|
||||
|
||||
g_thread_init (NULL);
|
||||
clutter_threads_init ();
|
||||
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
||||
return 1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user