mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-26 07:11:34 -08:00
Convert Free_Pixmap macro into terminal hook
* src/termhooks.h (terminal) [HAVE_WINDOW_SYSTEM]: New terminal hook free_pixmap. * src/image.c: Replace Free_Pixmap with free_pixmap. * src/msdos.h (FRAME_X_DISPLAY): * src/nsgui.h (Display): * src/nsterm.h (FRAME_NS_DISPLAY, FRAME_X_DISPLAY, FRAME_X_SCREEN) (FRAME_X_VISUAL): * src/w32term.h (FRAME_X_DISPLAY): Remove unused X-compatibility macros and typedefs. * src/nsterm.m: * src/w32term.c: * src/xterm.c: Implement and set free_pixmap hook.
This commit is contained in:
parent
6bfc5fc6c4
commit
616ce44ac5
9 changed files with 51 additions and 35 deletions
24
src/image.c
24
src/image.c
|
|
@ -1221,26 +1221,6 @@ four_corners_best (XImagePtr_or_DC ximg, int *corners,
|
|||
return best;
|
||||
}
|
||||
|
||||
/* Portability macros */
|
||||
|
||||
#ifdef HAVE_NTGUI
|
||||
|
||||
#define Free_Pixmap(display, pixmap) \
|
||||
DeleteObject (pixmap)
|
||||
|
||||
#elif defined (HAVE_NS)
|
||||
|
||||
#define Free_Pixmap(display, pixmap) \
|
||||
ns_release_object (pixmap)
|
||||
|
||||
#else
|
||||
|
||||
#define Free_Pixmap(display, pixmap) \
|
||||
XFreePixmap (display, pixmap)
|
||||
|
||||
#endif /* !HAVE_NTGUI && !HAVE_NS */
|
||||
|
||||
|
||||
/* Return the `background' field of IMG. If IMG doesn't have one yet,
|
||||
it is guessed heuristically. If non-zero, XIMG is an existing
|
||||
XImage object (or device context with the image selected on W32) to
|
||||
|
|
@ -1328,7 +1308,7 @@ image_clear_image_1 (struct frame *f, struct image *img, int flags)
|
|||
{
|
||||
if (img->pixmap)
|
||||
{
|
||||
Free_Pixmap (FRAME_X_DISPLAY (f), img->pixmap);
|
||||
FRAME_TERMINAL (f)->free_pixmap (f, img->pixmap);
|
||||
img->pixmap = NO_PIXMAP;
|
||||
/* NOTE (HAVE_NS): background color is NOT an indexed color! */
|
||||
img->background_valid = 0;
|
||||
|
|
@ -1347,7 +1327,7 @@ image_clear_image_1 (struct frame *f, struct image *img, int flags)
|
|||
{
|
||||
if (img->mask)
|
||||
{
|
||||
Free_Pixmap (FRAME_X_DISPLAY (f), img->mask);
|
||||
FRAME_TERMINAL (f)->free_pixmap (f, img->mask);
|
||||
img->mask = NO_PIXMAP;
|
||||
img->background_transparent_valid = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,6 @@ typedef struct tty_display_info Display_Info;
|
|||
extern struct tty_display_info the_only_display_info;
|
||||
extern struct tty_output the_only_tty_output;
|
||||
|
||||
#define FRAME_X_DISPLAY(f) ((Display *) 0)
|
||||
#define FRAME_FONT(f) ((f)->output_data.tty->font)
|
||||
#define FRAME_DISPLAY_INFO(f) (&the_only_display_info)
|
||||
|
||||
|
|
|
|||
|
|
@ -115,7 +115,6 @@ typedef NSColor * Color;
|
|||
typedef void * Color;
|
||||
#endif
|
||||
typedef int Window;
|
||||
typedef int Display;
|
||||
|
||||
|
||||
/* Some sort of attempt to normalize rectangle handling. Seems a bit
|
||||
|
|
|
|||
|
|
@ -997,12 +997,6 @@ struct x_output
|
|||
#define FRAME_NS_WINDOW(f) ((f)->output_data.ns->window_desc)
|
||||
#define FRAME_NATIVE_WINDOW(f) FRAME_NS_WINDOW (f)
|
||||
|
||||
/* This is the `Display *' which frame F is on. */
|
||||
#define FRAME_NS_DISPLAY(f) (0)
|
||||
#define FRAME_X_DISPLAY(f) (0)
|
||||
#define FRAME_X_SCREEN(f) (0)
|
||||
#define FRAME_X_VISUAL(f) FRAME_DISPLAY_INFO(f)->visual
|
||||
|
||||
#define FRAME_FOREGROUND_COLOR(f) ((f)->output_data.ns->foreground_color)
|
||||
#define FRAME_BACKGROUND_COLOR(f) ((f)->output_data.ns->background_color)
|
||||
|
||||
|
|
|
|||
16
src/nsterm.m
16
src/nsterm.m
|
|
@ -2515,8 +2515,7 @@ ns_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
|
|||
|
||||
/* Clear the mouse-moved flag for every frame on this display. */
|
||||
FOR_EACH_FRAME (tail, frame)
|
||||
if (FRAME_NS_P (XFRAME (frame))
|
||||
&& FRAME_NS_DISPLAY (XFRAME (frame)) == FRAME_NS_DISPLAY (*fp))
|
||||
if (FRAME_NS_P (XFRAME (frame)))
|
||||
XFRAME (frame)->mouse_moved = 0;
|
||||
|
||||
dpyinfo->last_mouse_scroll_bar = nil;
|
||||
|
|
@ -4966,6 +4965,18 @@ ns_judge_scroll_bars (struct frame *f)
|
|||
[eview updateFrameSize: NO];
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Image Hooks
|
||||
|
||||
========================================================================== */
|
||||
|
||||
static void
|
||||
ns_free_pixmap (struct frame *_f, Pixmap pixmap)
|
||||
{
|
||||
ns_release_object (pixmap);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Initialization
|
||||
|
|
@ -5196,6 +5207,7 @@ ns_create_terminal (struct ns_display_info *dpyinfo)
|
|||
terminal->redeem_scroll_bar_hook = ns_redeem_scroll_bar;
|
||||
terminal->judge_scroll_bars_hook = ns_judge_scroll_bars;
|
||||
terminal->get_string_resource_hook = ns_get_string_resource;
|
||||
terminal->free_pixmap = ns_free_pixmap;
|
||||
terminal->delete_frame_hook = ns_destroy_window;
|
||||
terminal->delete_terminal_hook = ns_delete_terminal;
|
||||
/* Other hooks are NULL by default. */
|
||||
|
|
|
|||
|
|
@ -741,6 +741,15 @@ struct terminal
|
|||
const char *name,
|
||||
const char *class);
|
||||
|
||||
/* Image hooks */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
/* Free the pixmap PIXMAP on F. */
|
||||
void (*free_pixmap) (struct frame *f, Pixmap pixmap);
|
||||
|
||||
#endif
|
||||
|
||||
/* Deletion hooks */
|
||||
|
||||
/* Called to delete the device-specific portions of a frame that is
|
||||
on this terminal device. */
|
||||
void (*delete_frame_hook) (struct frame *);
|
||||
|
|
|
|||
|
|
@ -6869,6 +6869,7 @@ w32_wm_set_size_hint (struct frame *f, long flags, bool user_position)
|
|||
leave_crit ();
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Fonts
|
||||
***********************************************************************/
|
||||
|
|
@ -6940,6 +6941,18 @@ w32_toggle_invisible_pointer (struct frame *f, bool invisible)
|
|||
unblock_input ();
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Image Hooks
|
||||
***********************************************************************/
|
||||
|
||||
static void
|
||||
w32_free_pixmap (struct frame *_f, Pixmap pixmap)
|
||||
{
|
||||
DeleteObject (pixmap);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Initialization
|
||||
***********************************************************************/
|
||||
|
|
@ -7119,6 +7132,7 @@ w32_create_terminal (struct w32_display_info *dpyinfo)
|
|||
terminal->redeem_scroll_bar_hook = w32_redeem_scroll_bar;
|
||||
terminal->judge_scroll_bars_hook = w32_judge_scroll_bars;
|
||||
terminal->get_string_resource_hook = w32_get_string_resource;
|
||||
terminal->free_pixmap = w32_free_pixmap;
|
||||
terminal->delete_frame_hook = w32_destroy_window;
|
||||
terminal->delete_terminal_hook = w32_delete_terminal;
|
||||
/* Other hooks are NULL by default. */
|
||||
|
|
|
|||
|
|
@ -420,9 +420,6 @@ extern struct w32_output w32term_display;
|
|||
/* This gives the w32_display_info structure for the display F is on. */
|
||||
#define FRAME_DISPLAY_INFO(f) ((void) (f), (&one_w32_display_info))
|
||||
|
||||
/* This is the `Display *' which frame F is on. */
|
||||
#define FRAME_X_DISPLAY(f) (0)
|
||||
|
||||
#define FRAME_NORMAL_PLACEMENT(F) ((F)->output_data.w32->normal_placement)
|
||||
#define FRAME_PREV_FSMODE(F) ((F)->output_data.w32->prev_fsmode)
|
||||
|
||||
|
|
|
|||
12
src/xterm.c
12
src/xterm.c
|
|
@ -12180,6 +12180,17 @@ x_check_font (struct frame *f, struct font *font)
|
|||
|
||||
#endif /* GLYPH_DEBUG */
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Image Hooks
|
||||
***********************************************************************/
|
||||
|
||||
static void
|
||||
x_free_pixmap (struct frame *f, Pixmap pixmap)
|
||||
{
|
||||
XFreePixmap (FRAME_X_DISPLAY (f), pixmap);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Initialization
|
||||
|
|
@ -13257,6 +13268,7 @@ x_create_terminal (struct x_display_info *dpyinfo)
|
|||
terminal->redeem_scroll_bar_hook = XTredeem_scroll_bar;
|
||||
terminal->judge_scroll_bars_hook = XTjudge_scroll_bars;
|
||||
terminal->get_string_resource_hook = x_get_string_resource;
|
||||
terminal->free_pixmap = x_free_pixmap;
|
||||
terminal->delete_frame_hook = x_destroy_window;
|
||||
terminal->delete_terminal_hook = x_delete_terminal;
|
||||
/* Other hooks are NULL by default. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue