From d1045b68761137114109cd3c786e0f35f8d560c4 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Mon, 7 Dec 1998 19:03:10 +0000 Subject: [PATCH] Use IPC_RMID _after_ doing XShmAttach. This should work everywhere, and Mon Dec 7 13:38:06 1998 Owen Taylor * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID _after_ doing XShmAttach. This should work everywhere, and avoid the need for signal handlers or configure checks. --- ChangeLog | 12 ++++++++++++ ChangeLog.pre-2-0 | 12 ++++++++++++ ChangeLog.pre-2-10 | 12 ++++++++++++ ChangeLog.pre-2-2 | 12 ++++++++++++ ChangeLog.pre-2-4 | 12 ++++++++++++ ChangeLog.pre-2-6 | 12 ++++++++++++ ChangeLog.pre-2-8 | 12 ++++++++++++ gdk/gdkimage.c | 14 ++++++++------ gdk/x11/gdkimage-x11.c | 14 ++++++++------ gtk/gtkinputdialog.c | 6 ++++-- 10 files changed, 104 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 7f26956e6b..b43cd4ae84 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,15 @@ +Mon Dec 7 13:38:06 1998 Owen Taylor + + * gdk/gdkimage.c (gdk_image_new): Use IPC_RMID + _after_ doing XShmAttach. This should work everywhere, + and avoid the need for signal handlers or configure + checks. + +Thu Dec 3 19:58:45 1998 Owen Taylor + + * gtk/gtkinputdialog.c: Use _add_with_viewport() for + scrolled window contents. + 1998-12-07 Federico Mena Quintero * gtk/gtkpaned.h (struct _GtkPaned): Removed the unused cursor diff --git a/gdk/gdkimage.c b/gdk/gdkimage.c index 8e62fef664..5d48182d93 100644 --- a/gdk/gdkimage.c +++ b/gdk/gdkimage.c @@ -235,11 +235,6 @@ gdk_image_new (GdkImageType type, return NULL; } -#ifdef IPC_RMID_DEFERRED_RELEASE - if (x_shm_info->shmaddr != (char*) -1) - shmctl (x_shm_info->shmid, IPC_RMID, 0); -#endif - gdk_error_code = 0; gdk_error_warnings = 0; @@ -260,6 +255,14 @@ gdk_image_new (GdkImageType type, gdk_use_xshm = False; return NULL; } + + /* We mark the segment as destroyed so that when + * the last process detaches, it will be deleted. + * There is a small possibility of leaking if + * we die in XShmAttach. In theory, a signal handler + * could be set up. + */ + shmctl (x_shm_info->shmid, IPC_RMID, 0); if (image) image_list = g_list_prepend (image_list, image); @@ -417,7 +420,6 @@ gdk_image_destroy (GdkImage *image) x_shm_info = private->x_shm_info; shmdt (x_shm_info->shmaddr); - shmctl (x_shm_info->shmid, IPC_RMID, 0); g_free (private->x_shm_info); diff --git a/gdk/x11/gdkimage-x11.c b/gdk/x11/gdkimage-x11.c index 8e62fef664..5d48182d93 100644 --- a/gdk/x11/gdkimage-x11.c +++ b/gdk/x11/gdkimage-x11.c @@ -235,11 +235,6 @@ gdk_image_new (GdkImageType type, return NULL; } -#ifdef IPC_RMID_DEFERRED_RELEASE - if (x_shm_info->shmaddr != (char*) -1) - shmctl (x_shm_info->shmid, IPC_RMID, 0); -#endif - gdk_error_code = 0; gdk_error_warnings = 0; @@ -260,6 +255,14 @@ gdk_image_new (GdkImageType type, gdk_use_xshm = False; return NULL; } + + /* We mark the segment as destroyed so that when + * the last process detaches, it will be deleted. + * There is a small possibility of leaking if + * we die in XShmAttach. In theory, a signal handler + * could be set up. + */ + shmctl (x_shm_info->shmid, IPC_RMID, 0); if (image) image_list = g_list_prepend (image_list, image); @@ -417,7 +420,6 @@ gdk_image_destroy (GdkImage *image) x_shm_info = private->x_shm_info; shmdt (x_shm_info->shmaddr); - shmctl (x_shm_info->shmid, IPC_RMID, 0); g_free (private->x_shm_info); diff --git a/gtk/gtkinputdialog.c b/gtk/gtkinputdialog.c index 0d68b2b1c5..5eac29bbda 100644 --- a/gtk/gtkinputdialog.c +++ b/gtk/gtkinputdialog.c @@ -506,7 +506,8 @@ gtk_input_dialog_fill_axes(GtkInputDialog *inputd, GdkDeviceInfo *info) gtk_widget_destroy (inputd->axis_list); } inputd->axis_list = gtk_table_new (GDK_AXIS_LAST, 2, 0); - gtk_container_add (GTK_CONTAINER (inputd->axis_listbox), inputd->axis_list); + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (inputd->axis_listbox), + inputd->axis_list); gtk_widget_show (inputd->axis_list); gtk_widget_realize (inputd->axis_list); @@ -641,7 +642,8 @@ gtk_input_dialog_fill_keys(GtkInputDialog *inputd, GdkDeviceInfo *info) } inputd->keys_list = gtk_table_new (info->num_keys, 3, FALSE); - gtk_container_add (GTK_CONTAINER (inputd->keys_listbox), inputd->keys_list); + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (inputd->keys_listbox), + inputd->keys_list); gtk_widget_show (inputd->keys_list); gtk_widget_realize (inputd->keys_list);