diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 9fe9acda5..834731e22 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -34,7 +34,7 @@
* Clutter is thread-aware: 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().
+ * clutter_init().
*
* Thread Initialization
* 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 ();
}
}
diff --git a/clutter/clutter-main.h b/clutter/clutter-main.h
index f2d821eb7..a99a69400 100644
--- a/clutter/clutter-main.h
+++ b/clutter/clutter-main.h
@@ -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,
diff --git a/tests/interactive/test-texture-async.c b/tests/interactive/test-texture-async.c
index 7e09f3642..20d802b24 100644
--- a/tests/interactive/test-texture-async.c
+++ b/tests/interactive/test-texture-async.c
@@ -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);
diff --git a/tests/interactive/test-texture-material.c b/tests/interactive/test-texture-material.c
index 867711f79..4886ce03a 100644
--- a/tests/interactive/test-texture-material.c
+++ b/tests/interactive/test-texture-material.c
@@ -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;
diff --git a/tests/interactive/test-threads.c b/tests/interactive/test-threads.c
index dd7a2f85f..fd73eafea 100644
--- a/tests/interactive/test-threads.c
+++ b/tests/interactive/test-threads.c
@@ -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;