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
35G_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
43GDK_THREADS_DEPRECATED
44void gdk_threads_init (void);
45GDK_THREADS_DEPRECATED
46void gdk_threads_enter (void);
47GDK_THREADS_DEPRECATED
48void gdk_threads_leave (void);
49GDK_THREADS_DEPRECATED
50void gdk_threads_set_lock_functions (GCallback enter_fn,
51 GCallback leave_fn);
52
53GDK_AVAILABLE_IN_ALL
54guint gdk_threads_add_idle_full (gint priority,
55 GSourceFunc function,
56 gpointer data,
57 GDestroyNotify notify);
58GDK_AVAILABLE_IN_ALL
59guint gdk_threads_add_idle (GSourceFunc function,
60 gpointer data);
61GDK_AVAILABLE_IN_ALL
62guint gdk_threads_add_timeout_full (gint priority,
63 guint interval,
64 GSourceFunc function,
65 gpointer data,
66 GDestroyNotify notify);
67GDK_AVAILABLE_IN_ALL
68guint gdk_threads_add_timeout (guint interval,
69 GSourceFunc function,
70 gpointer data);
71GDK_AVAILABLE_IN_ALL
72guint gdk_threads_add_timeout_seconds_full (gint priority,
73 guint interval,
74 GSourceFunc function,
75 gpointer data,
76 GDestroyNotify notify);
77GDK_AVAILABLE_IN_ALL
78guint 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
110G_END_DECLS
111
112#endif /* __GDK_THREADS_H__ */
113