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,
gimp_image_get_ID (display->image),
display->instance);
gimp_display_get_instance (display));
g_free (escaped);
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 (display->image == NULL);
display->image = image;
display->instance = image->instance_count;
image->instance_count++; /* this is obsolete */
image->disp_count++;
#if 0
g_print ("%s: image->ref_count before refing: %d\n",
G_STRFUNC, G_OBJECT (display->image)->ref_count);
#endif
g_object_ref (image);
display->image = g_object_ref (image);
image->disp_count++;
g_signal_connect (gimp_image_get_projection (image), "update",
G_CALLBACK (gimp_display_update_handler),

View File

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

View File

@ -40,8 +40,6 @@ struct _GimpDisplay
GimpDisplayConfig *config;
GimpImage *image; /* pointer to the associated image */
gint instance; /* the instance # of this display as */
/* taken from the image at creation */
};
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,
GimpImage *image,
GimpUnit unit,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager,
GimpDialogFactory *display_factory);
void gimp_display_delete (GimpDisplay *display);
void gimp_display_close (GimpDisplay *display);
GimpDisplay * gimp_display_new (Gimp *gimp,
GimpImage *image,
GimpUnit unit,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager,
GimpDialogFactory *display_factory);
void gimp_display_delete (GimpDisplay *display);
void gimp_display_close (GimpDisplay *display);
gint gimp_display_get_ID (GimpDisplay *display);
GimpDisplay * gimp_display_get_by_ID (Gimp *gimp,
gint ID);
gint gimp_display_get_ID (GimpDisplay *display);
GimpDisplay * gimp_display_get_by_ID (Gimp *gimp,
gint ID);
Gimp * gimp_display_get_gimp (GimpDisplay *display);
Gimp * gimp_display_get_gimp (GimpDisplay *display);
GimpImage * gimp_display_get_image (GimpDisplay *display);
void gimp_display_set_image (GimpDisplay *display,
GimpImage *image);
GimpImage * gimp_display_get_image (GimpDisplay *display);
void gimp_display_set_image (GimpDisplay *display,
GimpImage *image);
GimpDisplayShell * gimp_display_get_shell (GimpDisplay *display);
gint gimp_display_get_instance (GimpDisplay *display);
void gimp_display_empty (GimpDisplay *display);
void gimp_display_fill (GimpDisplay *display,
GimpImage *image,
GimpUnit unit,
gdouble scale);
GimpDisplayShell * gimp_display_get_shell (GimpDisplay *display);
void gimp_display_update_area (GimpDisplay *display,
gboolean now,
gint x,
gint y,
gint w,
gint h);
void gimp_display_empty (GimpDisplay *display);
void gimp_display_fill (GimpDisplay *display,
GimpImage *image,
GimpUnit unit,
gdouble scale);
void gimp_display_flush (GimpDisplay *display);
void gimp_display_flush_now (GimpDisplay *display);
void gimp_display_update_area (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__ */

View File

@ -238,7 +238,8 @@ gimp_display_shell_format_title (GimpDisplayShell *shell,
break;
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;
case 't': /* image type */