forked from AuroraMiddleware/gtk
a0c84d6818
Tue Dec 15 01:38:53 1998 Owen Taylor <otaylor@redhat.com> * gtk/Makefile.am: Commented out testthreads from the build process, since we won't have any idea how to create a thread. * configure.in (LIBS): use glib-config ... gthread so we always build a thread-compatible library. * gtk/gtkaccellabel.c gtk/gtkclist.c gtk/gtkcolorsel.c gtk/gtkcombo.c gtk/gtkcontainer.c gtk/gtkentry.c gtk/gtklist.c gtk/gtkmenuitem.c gtk/gtknotebook.c gtk/gtkrange.c gtk/gtkselection.c gtk/gtkspinbutton.c gtk/gtktext.c gtk/gtktooltips.c gtk/gtkwidget.c: Add GTK_THREADS_ENTER/LEAVE pairs around timeouts and idles to account for the fact that they are no longer called within the GTK+ lock. * gtk/gtkprivate.h: Added definitions for locking the main GTK+ mutex. * gtk/gtkmain.c: Re-implement the main loop in terms of the GLib main loop. * gdk/gdk.h gdk/gdkthreads.c gdk/Makefile.am: Removed threading functionality, as it seems better to subsume GDK within the GTK+ lock than vice-versa. * gdk/gdkevents.c: New file, containing event handling bits from gdk.c. * gdk/gdkevents.c: Implement event source for GDK events. * configure.in gdk/gdkevents.c: Removed attempts to subtract base_id, which were already non-functional.
82 lines
3.1 KiB
C
82 lines
3.1 KiB
C
/* GTK - The GIMP Toolkit
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this library; if not, write to the
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
#ifndef __GTK_PRIVATE_H__
|
|
#define __GTK_PRIVATE_H__
|
|
|
|
|
|
#include <gtk/gtkobject.h>
|
|
#include <gtk/gtkwidget.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
/* The private flags that are used in the private_flags member of GtkWidget.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PRIVATE_GTK_USER_STYLE = 1 << 0,
|
|
PRIVATE_GTK_REDRAW_PENDING = 1 << 1,
|
|
PRIVATE_GTK_RESIZE_PENDING = 1 << 2,
|
|
PRIVATE_GTK_RESIZE_NEEDED = 1 << 3,
|
|
PRIVATE_GTK_LEAVE_PENDING = 1 << 4,
|
|
PRIVATE_GTK_HAS_SHAPE_MASK = 1 << 5,
|
|
PRIVATE_GTK_IN_REPARENT = 1 << 6
|
|
} GtkPrivateFlags;
|
|
|
|
/* Macros for extracting a widgets private_flags from GtkWidget.
|
|
*/
|
|
#define GTK_PRIVATE_FLAGS(wid) (GTK_WIDGET (wid)->private_flags)
|
|
#define GTK_WIDGET_USER_STYLE(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_USER_STYLE) != 0)
|
|
#define GTK_WIDGET_REDRAW_PENDING(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_REDRAW_PENDING) != 0)
|
|
#define GTK_CONTAINER_RESIZE_PENDING(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_RESIZE_PENDING) != 0)
|
|
#define GTK_WIDGET_RESIZE_NEEDED(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_RESIZE_NEEDED) != 0)
|
|
#define GTK_WIDGET_LEAVE_PENDING(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_LEAVE_PENDING) != 0)
|
|
#define GTK_WIDGET_HAS_SHAPE_MASK(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_HAS_SHAPE_MASK) != 0)
|
|
#define GTK_WIDGET_IN_REPARENT(obj) ((GTK_PRIVATE_FLAGS (obj) & PRIVATE_GTK_IN_REPARENT) != 0)
|
|
|
|
/* Macros for setting and clearing private widget flags.
|
|
* we use a preprocessor string concatenation here for a clear
|
|
* flags/private_flags distinction at the cost of single flag operations.
|
|
*/
|
|
#define GTK_PRIVATE_SET_FLAG(wid,flag) G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END
|
|
#define GTK_PRIVATE_UNSET_FLAG(wid,flag) G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) &= ~(PRIVATE_ ## flag)); }G_STMT_END
|
|
|
|
/* Threading functions */
|
|
|
|
extern GMutex *gtk_threads_mutex;
|
|
|
|
#define GTK_THREADS_ENTER G_STMT_START { \
|
|
if (gtk_threads_mutex) \
|
|
g_mutex_lock (gtk_threads_mutex); \
|
|
} G_STMT_END
|
|
#define GTK_THREADS_LEAVE G_STMT_START { \
|
|
if (gtk_threads_mutex) \
|
|
g_mutex_unlock (gtk_threads_mutex); \
|
|
} G_STMT_END
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#endif /* __GTK_PRIVATE_H__ */
|