diff options
| author | Karoly Lorentey | 2004-11-13 18:34:40 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-11-13 18:34:40 +0000 |
| commit | e417405015c93c81641f5c4a33ec898b5c353772 (patch) | |
| tree | 017a980c35c8a71c372304418d151e3826f88636 /src/xselect.c | |
| parent | f590a2a442d19f3a74d7bbd02bbcb4e3239f2327 (diff) | |
| parent | 68d1b30d251b4771f739d20f507cd9523ae3919b (diff) | |
| download | emacs-e417405015c93c81641f5c4a33ec898b5c353772.tar.gz emacs-e417405015c93c81641f5c4a33ec898b5c353772.zip | |
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-673
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-674
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-675
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-676
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-677
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-678
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-679
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-680
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-681
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-682
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-683
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-684
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-685
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-686
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-687
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-688
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-689
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-690
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-691
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-692
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-693
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-69
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-70
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-71
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-267
Diffstat (limited to 'src/xselect.c')
| -rw-r--r-- | src/xselect.c | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/xselect.c b/src/xselect.c index 06f4bfbd2a1..cd059e81979 100644 --- a/src/xselect.c +++ b/src/xselect.c | |||
| @@ -24,6 +24,14 @@ Boston, MA 02111-1307, USA. */ | |||
| 24 | 24 | ||
| 25 | #include <config.h> | 25 | #include <config.h> |
| 26 | #include <stdio.h> /* termhooks.h needs this */ | 26 | #include <stdio.h> /* termhooks.h needs this */ |
| 27 | |||
| 28 | #ifdef HAVE_SYS_TYPES_H | ||
| 29 | #include <sys/types.h> | ||
| 30 | #endif | ||
| 31 | #ifdef HAVE_UNISTD_H | ||
| 32 | #include <unistd.h> | ||
| 33 | #endif | ||
| 34 | |||
| 27 | #include "lisp.h" | 35 | #include "lisp.h" |
| 28 | #include "xterm.h" /* for all of the X includes */ | 36 | #include "xterm.h" /* for all of the X includes */ |
| 29 | #include "dispextern.h" /* frame.h seems to want this */ | 37 | #include "dispextern.h" /* frame.h seems to want this */ |
| @@ -174,7 +182,8 @@ static Lisp_Object x_get_window_property_as_lisp_data (); | |||
| 174 | 182 | ||
| 175 | 183 | ||
| 176 | 184 | ||
| 177 | /* Define a queue to save up SelectionRequest events for later handling. */ | 185 | /* Define a queue to save up SELECTION_REQUEST_EVENT events for later |
| 186 | handling. */ | ||
| 178 | 187 | ||
| 179 | struct selection_event_queue | 188 | struct selection_event_queue |
| 180 | { | 189 | { |
| @@ -184,11 +193,11 @@ struct selection_event_queue | |||
| 184 | 193 | ||
| 185 | static struct selection_event_queue *selection_queue; | 194 | static struct selection_event_queue *selection_queue; |
| 186 | 195 | ||
| 187 | /* Nonzero means queue up certain events--don't process them yet. */ | 196 | /* Nonzero means queue up SELECTION_REQUEST_EVENT events. */ |
| 188 | 197 | ||
| 189 | static int x_queue_selection_requests; | 198 | static int x_queue_selection_requests; |
| 190 | 199 | ||
| 191 | /* Queue up an X event *EVENT, to be processed later. */ | 200 | /* Queue up an SELECTION_REQUEST_EVENT *EVENT, to be processed later. */ |
| 192 | 201 | ||
| 193 | static void | 202 | static void |
| 194 | x_queue_event (event) | 203 | x_queue_event (event) |
| @@ -196,12 +205,14 @@ x_queue_event (event) | |||
| 196 | { | 205 | { |
| 197 | struct selection_event_queue *queue_tmp; | 206 | struct selection_event_queue *queue_tmp; |
| 198 | 207 | ||
| 199 | /* Don't queue repeated requests */ | 208 | /* Don't queue repeated requests. |
| 209 | This only happens for large requests which uses the incremental protocol. */ | ||
| 200 | for (queue_tmp = selection_queue; queue_tmp; queue_tmp = queue_tmp->next) | 210 | for (queue_tmp = selection_queue; queue_tmp; queue_tmp = queue_tmp->next) |
| 201 | { | 211 | { |
| 202 | if (!bcmp (&queue_tmp->event, event, sizeof (*event))) | 212 | if (!bcmp (&queue_tmp->event, event, sizeof (*event))) |
| 203 | { | 213 | { |
| 204 | TRACE1 ("IGNORE DUP SELECTION EVENT %08x", (unsigned long)queue_tmp); | 214 | TRACE1 ("DECLINE DUP SELECTION EVENT %08lx", (unsigned long)queue_tmp); |
| 215 | x_decline_selection_request (event); | ||
| 205 | return; | 216 | return; |
| 206 | } | 217 | } |
| 207 | } | 218 | } |
| @@ -211,14 +222,14 @@ x_queue_event (event) | |||
| 211 | 222 | ||
| 212 | if (queue_tmp != NULL) | 223 | if (queue_tmp != NULL) |
| 213 | { | 224 | { |
| 214 | TRACE1 ("QUEUE SELECTION EVENT %08x", (unsigned long)queue_tmp); | 225 | TRACE1 ("QUEUE SELECTION EVENT %08lx", (unsigned long)queue_tmp); |
| 215 | queue_tmp->event = *event; | 226 | queue_tmp->event = *event; |
| 216 | queue_tmp->next = selection_queue; | 227 | queue_tmp->next = selection_queue; |
| 217 | selection_queue = queue_tmp; | 228 | selection_queue = queue_tmp; |
| 218 | } | 229 | } |
| 219 | } | 230 | } |
| 220 | 231 | ||
| 221 | /* Start queuing SelectionRequest events. */ | 232 | /* Start queuing SELECTION_REQUEST_EVENT events. */ |
| 222 | 233 | ||
| 223 | static void | 234 | static void |
| 224 | x_start_queuing_selection_requests () | 235 | x_start_queuing_selection_requests () |
| @@ -230,7 +241,7 @@ x_start_queuing_selection_requests () | |||
| 230 | TRACE1 ("x_start_queuing_selection_requests %d", x_queue_selection_requests); | 241 | TRACE1 ("x_start_queuing_selection_requests %d", x_queue_selection_requests); |
| 231 | } | 242 | } |
| 232 | 243 | ||
| 233 | /* Stop queuing SelectionRequest events. */ | 244 | /* Stop queuing SELECTION_REQUEST_EVENT events. */ |
| 234 | 245 | ||
| 235 | static void | 246 | static void |
| 236 | x_stop_queuing_selection_requests () | 247 | x_stop_queuing_selection_requests () |
| @@ -244,7 +255,7 @@ x_stop_queuing_selection_requests () | |||
| 244 | while (selection_queue != NULL) | 255 | while (selection_queue != NULL) |
| 245 | { | 256 | { |
| 246 | struct selection_event_queue *queue_tmp = selection_queue; | 257 | struct selection_event_queue *queue_tmp = selection_queue; |
| 247 | TRACE1 ("RESTORE SELECTION EVENT %08x", (unsigned long)queue_tmp); | 258 | TRACE1 ("RESTORE SELECTION EVENT %08lx", (unsigned long)queue_tmp); |
| 248 | kbd_buffer_unget_event (&queue_tmp->event); | 259 | kbd_buffer_unget_event (&queue_tmp->event); |
| 249 | selection_queue = queue_tmp->next; | 260 | selection_queue = queue_tmp->next; |
| 250 | xfree ((char *)queue_tmp); | 261 | xfree ((char *)queue_tmp); |
| @@ -877,7 +888,9 @@ x_handle_selection_request (event) | |||
| 877 | struct x_display_info *dpyinfo | 888 | struct x_display_info *dpyinfo |
| 878 | = x_display_info_for_display (SELECTION_EVENT_DISPLAY (event)); | 889 | = x_display_info_for_display (SELECTION_EVENT_DISPLAY (event)); |
| 879 | 890 | ||
| 880 | TRACE0 ("x_handle_selection_request"); | 891 | TRACE2 ("x_handle_selection_request, from=0x%08lx time=%lu", |
| 892 | (unsigned long) SELECTION_EVENT_REQUESTOR (event), | ||
| 893 | (unsigned long) SELECTION_EVENT_TIME (event)); | ||
| 881 | 894 | ||
| 882 | local_selection_data = Qnil; | 895 | local_selection_data = Qnil; |
| 883 | target_symbol = Qnil; | 896 | target_symbol = Qnil; |