Deprecate g_thread_init()
[platform/upstream/glib.git] / gthread / gthread-impl.c
index 2c665e8..82ef3a1 100644 (file)
  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GLib Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
  */
 
-/* 
+/*
  * MT safe
  */
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-
-static gboolean thread_system_already_initialized = FALSE;
-static gint g_thread_map_priority (GThreadPriority priority);
-static gint g_thread_min_priority = 0;
-static gint g_thread_max_priority = 0;
-
-#include G_THREAD_SOURCE
-
-void g_mutex_init (void);
-void g_mem_init (void);
-void g_messages_init (void);
+#include "glib.h"
 
 void
-g_thread_init (GThreadFunctions* init)
+g_thread_init (gpointer init)
 {
-  gboolean supported;
-
-#ifndef        G_THREADS_ENABLED
-  g_error ("GLib thread support is disabled.");
-#endif /* !G_THREADS_ENABLED */
-
-  if (thread_system_already_initialized)
-    g_error ("GThread system may only be initialized once.");
-    
-  thread_system_already_initialized = TRUE;
-
-  if (init == NULL)
-    init = &g_thread_functions_for_glib_use_default;
-  else
-    g_thread_use_default_impl = FALSE;
-
-#if defined (G_OS_WIN32) && defined (__GNUC__)
-  memcpy(&g_thread_functions_for_glib_use, init, sizeof (*init));
-#else
-  g_thread_functions_for_glib_use = *init;
-#endif
-  /* It is important, that g_threads_got_initialized is not set before the
-   * thread initialization functions of the different modules are called
-   */
-
-  supported = (init->mutex_new &&  
-              init->mutex_lock && 
-              init->mutex_trylock && 
-              init->mutex_unlock && 
-              init->mutex_free && 
-              init->cond_new && 
-              init->cond_signal && 
-              init->cond_broadcast && 
-              init->cond_wait && 
-              init->cond_timed_wait &&
-              init->cond_free &&
-              init->private_new &&
-              init->private_get &&
-              init->private_get);
-
-  /* if somebody is calling g_thread_init (), it means that he wants to
-   * have thread support, so check this
-   */
-  if (!supported)
-    {
-      if (g_thread_use_default_impl)
-       g_error ("Threads are not supported on this platform.");
-      else
-       g_error ("The supplied thread function vector is invalid.");
-    }
-
-  /* now do any initialization stuff required by the implementation,
-   * but only if called with a NULL argument, of course. Otherwise
-   * it's up to the user to do so. */
-
-#ifdef HAVE_G_THREAD_IMPL_INIT
-  if (g_thread_use_default_impl)
-    g_thread_impl_init();
-#endif
-
-  /* now call the thread initialization functions of the different
-   * glib modules. order does matter, g_mutex_init MUST come first.
-   */
-  g_mutex_init ();
-  g_mem_init ();
-  g_messages_init ();
-
-  /* now we can set g_threads_got_initialized and thus enable
-   * all the thread functions
-   */
-  g_threads_got_initialized = TRUE;
-
-  /* we want the main thread to run with normal priority */
-  g_thread_set_priority (g_thread_self(), G_THREAD_PRIORITY_NORMAL);
+  if (init != NULL)
+    g_warning ("GThread system no longer supports custom thread implementations.");
 }
 
-static gint 
-g_thread_map_priority (GThreadPriority priority)
+void
+g_thread_init_with_errorcheck_mutexes (gpointer vtable)
 {
-  guint procent;
-  switch (priority)
-    {
-    case G_THREAD_PRIORITY_LOW:             procent =   0; break;
-    default: case G_THREAD_PRIORITY_NORMAL: procent =  40; break;
-    case G_THREAD_PRIORITY_HIGH:            procent =  80; break;
-    case G_THREAD_PRIORITY_URGENT:          procent = 100; break;
-    }
-  return g_thread_min_priority + 
-    (g_thread_max_priority - g_thread_min_priority) * procent / 100;
+  g_assert (vtable == NULL);
 }