mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-30 17:10:51 -08:00
Remove pad from struct input_event.
* termhooks.h (struct input_event): Remove padding field. Adjust comment. * keyboard.c (event_to_kboard): Simplify because frame_or_window member is never cons for a long time. Adjust comment. (mark_kboards): Adjust because SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT has no Lisp_Objects to mark. Add comment. * xterm.c (handle_one_xevent): Do not initialize frame_or_window field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT.
This commit is contained in:
parent
052f924a01
commit
2b371ff75d
4 changed files with 24 additions and 28 deletions
|
|
@ -1,3 +1,15 @@
|
|||
2012-11-02 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Remove pad from struct input_event.
|
||||
* termhooks.h (struct input_event): Remove padding field.
|
||||
Adjust comment.
|
||||
* keyboard.c (event_to_kboard): Simplify because frame_or_window
|
||||
member is never cons for a long time. Adjust comment.
|
||||
(mark_kboards): Adjust because SELECTION_REQUEST_EVENT and
|
||||
SELECTION_CLEAR_EVENT has no Lisp_Objects to mark. Add comment.
|
||||
* xterm.c (handle_one_xevent): Do not initialize frame_or_window
|
||||
field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT.
|
||||
|
||||
2012-11-01 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32proc.c (getpgrp, setpgid): New functions. (Bug#12776)
|
||||
|
|
|
|||
|
|
@ -3416,20 +3416,13 @@ int stop_character EXTERNALLY_VISIBLE;
|
|||
static KBOARD *
|
||||
event_to_kboard (struct input_event *event)
|
||||
{
|
||||
Lisp_Object frame;
|
||||
frame = event->frame_or_window;
|
||||
if (CONSP (frame))
|
||||
frame = XCAR (frame);
|
||||
else if (WINDOWP (frame))
|
||||
frame = WINDOW_FRAME (XWINDOW (frame));
|
||||
|
||||
/* There are still some events that don't set this field.
|
||||
For now, just ignore the problem.
|
||||
Also ignore dead frames here. */
|
||||
if (!FRAMEP (frame) || !FRAME_LIVE_P (XFRAME (frame)))
|
||||
return 0;
|
||||
else
|
||||
return FRAME_KBOARD (XFRAME (frame));
|
||||
Lisp_Object obj = event->frame_or_window;
|
||||
/* There are some events that set this field to nil or string. */
|
||||
if (WINDOWP (obj))
|
||||
obj = WINDOW_FRAME (XWINDOW (obj));
|
||||
/* Also ignore dead frames here. */
|
||||
return ((FRAMEP (obj) && FRAME_LIVE_P (XFRAME (obj)))
|
||||
? FRAME_KBOARD (XFRAME (obj)) : NULL);
|
||||
}
|
||||
|
||||
#ifdef subprocesses
|
||||
|
|
@ -12173,14 +12166,15 @@ mark_kboards (void)
|
|||
{
|
||||
if (event == kbd_buffer + KBD_BUFFER_SIZE)
|
||||
event = kbd_buffer;
|
||||
/* These two special event types has no Lisp_Objects to mark. */
|
||||
if (event->kind != SELECTION_REQUEST_EVENT
|
||||
&& event->kind != SELECTION_CLEAR_EVENT)
|
||||
{
|
||||
mark_object (event->x);
|
||||
mark_object (event->y);
|
||||
mark_object (event->frame_or_window);
|
||||
mark_object (event->arg);
|
||||
}
|
||||
mark_object (event->frame_or_window);
|
||||
mark_object (event->arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -242,16 +242,8 @@ struct input_event
|
|||
Lisp_Object x, y;
|
||||
Time timestamp;
|
||||
|
||||
/* This is padding just to put the frame_or_window field
|
||||
past the size of struct selection_input_event. */
|
||||
int *padding[2];
|
||||
|
||||
/* This field is copied into a vector while the event is in the queue,
|
||||
so that garbage collections won't kill it. */
|
||||
/* In a menu_bar_event, this is a cons cell whose car is the frame
|
||||
and whose cdr is the Lisp object that is the event's value. */
|
||||
/* This field is last so that struct selection_input_event
|
||||
does not overlap with it. */
|
||||
/* This field is copied into a vector while the event is in
|
||||
the queue, so that garbage collections won't kill it. */
|
||||
Lisp_Object frame_or_window;
|
||||
|
||||
/* Additional event argument. This is used for TOOL_BAR_EVENTs and
|
||||
|
|
|
|||
|
|
@ -6108,7 +6108,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
|
|||
SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display;
|
||||
SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection;
|
||||
SELECTION_EVENT_TIME (&inev.sie) = eventp->time;
|
||||
inev.ie.frame_or_window = Qnil;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -6128,7 +6127,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr,
|
|||
SELECTION_EVENT_TARGET (&inev.sie) = eventp->target;
|
||||
SELECTION_EVENT_PROPERTY (&inev.sie) = eventp->property;
|
||||
SELECTION_EVENT_TIME (&inev.sie) = eventp->time;
|
||||
inev.ie.frame_or_window = Qnil;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue