Make display->instance private, add an accessor and use it everywhere

This commit is contained in:
Michael Natterer
2009-10-06 09:16:46 +02:00
parent 5d70d60927
commit 23cd244c65
5 changed files with 67 additions and 49 deletions

View File

@ -280,7 +280,7 @@ windows_actions_image_notify (GimpDisplay *display,
title = g_strdup_printf ("%s-%d.%d", escaped, title = g_strdup_printf ("%s-%d.%d", escaped,
gimp_image_get_ID (display->image), gimp_image_get_ID (display->image),
display->instance); gimp_display_get_instance (display));
g_free (escaped); g_free (escaped);
g_object_set (action, g_object_set (action,

View File

@ -52,18 +52,14 @@ gimp_display_connect (GimpDisplay *display,
g_return_if_fail (GIMP_IS_IMAGE (image)); g_return_if_fail (GIMP_IS_IMAGE (image));
g_return_if_fail (display->image == NULL); g_return_if_fail (display->image == NULL);
display->image = image;
display->instance = image->instance_count;
image->instance_count++; /* this is obsolete */
image->disp_count++;
#if 0 #if 0
g_print ("%s: image->ref_count before refing: %d\n", g_print ("%s: image->ref_count before refing: %d\n",
G_STRFUNC, G_OBJECT (display->image)->ref_count); G_STRFUNC, G_OBJECT (display->image)->ref_count);
#endif #endif
g_object_ref (image); display->image = g_object_ref (image);
image->disp_count++;
g_signal_connect (gimp_image_get_projection (image), "update", g_signal_connect (gimp_image_get_projection (image), "update",
G_CALLBACK (gimp_display_update_handler), G_CALLBACK (gimp_display_update_handler),

View File

@ -64,6 +64,8 @@ typedef struct _GimpDisplayPrivate GimpDisplayPrivate;
struct _GimpDisplayPrivate struct _GimpDisplayPrivate
{ {
gint ID; /* unique identifier for this display */ gint ID; /* unique identifier for this display */
gint instance; /* the instance # of this display as
* taken from the image at creation */
GtkWidget *shell; GtkWidget *shell;
GSList *update_areas; GSList *update_areas;
}; };
@ -163,10 +165,6 @@ gimp_display_class_init (GimpDisplayClass *klass)
static void static void
gimp_display_init (GimpDisplay *display) gimp_display_init (GimpDisplay *display)
{ {
display->gimp = NULL;
display->image = NULL;
display->instance = 0;
} }
static void static void
@ -408,7 +406,11 @@ gimp_display_new (Gimp *gimp,
/* refs the image */ /* refs the image */
if (image) if (image)
gimp_display_connect (display, image); {
private->instance = image->instance_count++;
gimp_display_connect (display, image);
}
/* get an image window */ /* get an image window */
if (GIMP_GUI_CONFIG (display->config)->single_window_mode) if (GIMP_GUI_CONFIG (display->config)->single_window_mode)
@ -610,11 +612,14 @@ void
gimp_display_set_image (GimpDisplay *display, gimp_display_set_image (GimpDisplay *display,
GimpImage *image) GimpImage *image)
{ {
GimpImage *old_image = NULL; GimpDisplayPrivate *private;
GimpImage *old_image = NULL;
g_return_if_fail (GIMP_IS_DISPLAY (display)); g_return_if_fail (GIMP_IS_DISPLAY (display));
g_return_if_fail (image == NULL || GIMP_IS_IMAGE (image)); g_return_if_fail (image == NULL || GIMP_IS_IMAGE (image));
private = GIMP_DISPLAY_GET_PRIVATE (display);
if (display->image) if (display->image)
{ {
/* stop any active tool */ /* stop any active tool */
@ -629,7 +634,11 @@ gimp_display_set_image (GimpDisplay *display,
} }
if (image) if (image)
gimp_display_connect (display, image); {
private->instance = image->instance_count++;
gimp_display_connect (display, image);
}
if (old_image) if (old_image)
g_object_unref (old_image); g_object_unref (old_image);
@ -643,6 +652,18 @@ gimp_display_set_image (GimpDisplay *display,
g_object_notify (G_OBJECT (display), "image"); g_object_notify (G_OBJECT (display), "image");
} }
gint
gimp_display_get_instance (GimpDisplay *display)
{
GimpDisplayPrivate *private;
g_return_val_if_fail (GIMP_IS_DISPLAY (display), 0);
private = GIMP_DISPLAY_GET_PRIVATE (display);
return private->instance;
}
GimpDisplayShell * GimpDisplayShell *
gimp_display_get_shell (GimpDisplay *display) gimp_display_get_shell (GimpDisplay *display)
{ {

View File

@ -40,8 +40,6 @@ struct _GimpDisplay
GimpDisplayConfig *config; GimpDisplayConfig *config;
GimpImage *image; /* pointer to the associated image */ GimpImage *image; /* pointer to the associated image */
gint instance; /* the instance # of this display as */
/* taken from the image at creation */
}; };
struct _GimpDisplayClass struct _GimpDisplayClass
@ -50,45 +48,47 @@ struct _GimpDisplayClass
}; };
GType gimp_display_get_type (void) G_GNUC_CONST; GType gimp_display_get_type (void) G_GNUC_CONST;
GimpDisplay * gimp_display_new (Gimp *gimp, GimpDisplay * gimp_display_new (Gimp *gimp,
GimpImage *image, GimpImage *image,
GimpUnit unit, GimpUnit unit,
gdouble scale, gdouble scale,
GimpMenuFactory *menu_factory, GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager, GimpUIManager *popup_manager,
GimpDialogFactory *display_factory); GimpDialogFactory *display_factory);
void gimp_display_delete (GimpDisplay *display); void gimp_display_delete (GimpDisplay *display);
void gimp_display_close (GimpDisplay *display); void gimp_display_close (GimpDisplay *display);
gint gimp_display_get_ID (GimpDisplay *display); gint gimp_display_get_ID (GimpDisplay *display);
GimpDisplay * gimp_display_get_by_ID (Gimp *gimp, GimpDisplay * gimp_display_get_by_ID (Gimp *gimp,
gint ID); gint ID);
Gimp * gimp_display_get_gimp (GimpDisplay *display); Gimp * gimp_display_get_gimp (GimpDisplay *display);
GimpImage * gimp_display_get_image (GimpDisplay *display); GimpImage * gimp_display_get_image (GimpDisplay *display);
void gimp_display_set_image (GimpDisplay *display, void gimp_display_set_image (GimpDisplay *display,
GimpImage *image); GimpImage *image);
GimpDisplayShell * gimp_display_get_shell (GimpDisplay *display); gint gimp_display_get_instance (GimpDisplay *display);
void gimp_display_empty (GimpDisplay *display); GimpDisplayShell * gimp_display_get_shell (GimpDisplay *display);
void gimp_display_fill (GimpDisplay *display,
GimpImage *image,
GimpUnit unit,
gdouble scale);
void gimp_display_update_area (GimpDisplay *display, void gimp_display_empty (GimpDisplay *display);
gboolean now, void gimp_display_fill (GimpDisplay *display,
gint x, GimpImage *image,
gint y, GimpUnit unit,
gint w, gdouble scale);
gint h);
void gimp_display_flush (GimpDisplay *display); void gimp_display_update_area (GimpDisplay *display,
void gimp_display_flush_now (GimpDisplay *display); gboolean now,
gint x,
gint y,
gint w,
gint h);
void gimp_display_flush (GimpDisplay *display);
void gimp_display_flush_now (GimpDisplay *display);
#endif /* __GIMP_DISPLAY_H__ */ #endif /* __GIMP_DISPLAY_H__ */

View File

@ -238,7 +238,8 @@ gimp_display_shell_format_title (GimpDisplayShell *shell,
break; break;
case 'i': /* instance */ case 'i': /* instance */
i += print (title, title_len, i, "%d", shell->display->instance); i += print (title, title_len, i, "%d",
gimp_display_get_instance (shell->display));
break; break;
case 't': /* image type */ case 't': /* image type */