1 | /* GDK - The GIMP Drawing Kit |
2 | * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald |
3 | * |
4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Lesser General Public |
6 | * License as published by the Free Software Foundation; either |
7 | * version 2 of the License, or (at your option) any later version. |
8 | * |
9 | * This library is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | * Lesser General Public License for more details. |
13 | * |
14 | * You should have received a copy of the GNU Lesser General Public |
15 | * License along with this library. If not, see <http://www.gnu.org/licenses/>. |
16 | */ |
17 | |
18 | /* |
19 | * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS |
20 | * file for a list of people on the GTK+ Team. See the ChangeLog |
21 | * files for a list of changes. These files are distributed with |
22 | * GTK+ at ftp://ftp.gtk.org/pub/gtk/. |
23 | */ |
24 | |
25 | #ifndef __GDK_THREADS_H__ |
26 | #define __GDK_THREADS_H__ |
27 | |
28 | #if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) |
29 | #error "Only <gdk/gdk.h> can be included directly." |
30 | #endif |
31 | |
32 | #include <gdk/gdktypes.h> |
33 | #include <gdk/gdkversionmacros.h> |
34 | |
35 | G_BEGIN_DECLS |
36 | |
37 | #if defined(GDK_COMPILATION) || defined(GTK_COMPILATION) |
38 | #define GDK_THREADS_DEPRECATED _GDK_EXTERN |
39 | #else |
40 | #define GDK_THREADS_DEPRECATED GDK_DEPRECATED_IN_3_6 |
41 | #endif |
42 | |
43 | GDK_THREADS_DEPRECATED |
44 | void gdk_threads_init (void); |
45 | GDK_THREADS_DEPRECATED |
46 | void gdk_threads_enter (void); |
47 | GDK_THREADS_DEPRECATED |
48 | void gdk_threads_leave (void); |
49 | GDK_THREADS_DEPRECATED |
50 | void gdk_threads_set_lock_functions (GCallback enter_fn, |
51 | GCallback leave_fn); |
52 | |
53 | GDK_AVAILABLE_IN_ALL |
54 | guint gdk_threads_add_idle_full (gint priority, |
55 | GSourceFunc function, |
56 | gpointer data, |
57 | GDestroyNotify notify); |
58 | GDK_AVAILABLE_IN_ALL |
59 | guint gdk_threads_add_idle (GSourceFunc function, |
60 | gpointer data); |
61 | GDK_AVAILABLE_IN_ALL |
62 | guint gdk_threads_add_timeout_full (gint priority, |
63 | guint interval, |
64 | GSourceFunc function, |
65 | gpointer data, |
66 | GDestroyNotify notify); |
67 | GDK_AVAILABLE_IN_ALL |
68 | guint gdk_threads_add_timeout (guint interval, |
69 | GSourceFunc function, |
70 | gpointer data); |
71 | GDK_AVAILABLE_IN_ALL |
72 | guint gdk_threads_add_timeout_seconds_full (gint priority, |
73 | guint interval, |
74 | GSourceFunc function, |
75 | gpointer data, |
76 | GDestroyNotify notify); |
77 | GDK_AVAILABLE_IN_ALL |
78 | guint gdk_threads_add_timeout_seconds (guint interval, |
79 | GSourceFunc function, |
80 | gpointer data); |
81 | |
82 | |
83 | /** |
84 | * GDK_THREADS_ENTER: |
85 | * |
86 | * This macro marks the beginning of a critical section in which GDK and |
87 | * GTK+ functions can be called safely and without causing race |
88 | * conditions. Only one thread at a time can be in such a critial |
89 | * section. The macro expands to a no-op if #G_THREADS_ENABLED has not |
90 | * been defined. Typically gdk_threads_enter() should be used instead of |
91 | * this macro. |
92 | * |
93 | * Deprecated:3.6: Use g_main_context_invoke(), g_idle_add() and related |
94 | * functions if you need to schedule GTK+ calls from other threads. |
95 | */ |
96 | #define GDK_THREADS_ENTER() gdk_threads_enter() |
97 | |
98 | /** |
99 | * GDK_THREADS_LEAVE: |
100 | * |
101 | * This macro marks the end of a critical section |
102 | * begun with #GDK_THREADS_ENTER. |
103 | * |
104 | * Deprecated:3.6: Deprecated in 3.6. |
105 | */ |
106 | #define GDK_THREADS_LEAVE() gdk_threads_leave() |
107 | |
108 | #undef GDK_THREADS_DEPRECATED |
109 | |
110 | G_END_DECLS |
111 | |
112 | #endif /* __GDK_THREADS_H__ */ |
113 | |