[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/keyboard.c [emacs-unicode-2]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/src/keyboard.c [emacs-unicode-2] |
Date: |
Wed, 08 Dec 2004 00:47:54 -0500 |
Index: emacs/src/keyboard.c
diff -c emacs/src/keyboard.c:1.753.2.14 emacs/src/keyboard.c:1.753.2.15
*** emacs/src/keyboard.c:1.753.2.14 Fri Nov 19 06:54:59 2004
--- emacs/src/keyboard.c Wed Dec 8 05:02:20 2004
***************
*** 45,50 ****
--- 45,53 ----
#include <setjmp.h>
#include <errno.h>
+ #ifdef HAVE_GTK_AND_PTHREAD
+ #include <pthread.h>
+ #endif
#ifdef MSDOS
#include "msdos.h"
#include <time.h>
***************
*** 607,613 ****
/* We are unable to use interrupts if FIONREAD is not available,
so flush SIGIO so we won't try. */
! #if !defined (FIONREAD) || defined(HAVE_CARBON)
#ifdef SIGIO
#undef SIGIO
#endif
--- 610,616 ----
/* We are unable to use interrupts if FIONREAD is not available,
so flush SIGIO so we won't try. */
! #if !defined (FIONREAD)
#ifdef SIGIO
#undef SIGIO
#endif
***************
*** 1618,1624 ****
--- 1621,1630 ----
if (NILP (Vthis_command))
{
/* nil means key is undefined. */
+ Lisp_Object keys = Fvector (i, keybuf);
+ keys = Fkey_description (keys, Qnil);
bitch_at_user ();
+ message_with_string ("%s is undefined", keys, 0);
current_kboard->defining_kbd_macro = Qnil;
update_mode_lines = 1;
current_kboard->Vprefix_arg = Qnil;
***************
*** 6773,6778 ****
--- 6779,6803 ----
#ifdef BSD4_1
extern int select_alarmed;
#endif
+ #if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
+ extern pthread_t main_thread;
+ if (pthread_self () != main_thread)
+ {
+ /* POSIX says any thread can receive the signal. On GNU/Linux that is
+ not true, but for other systems (FreeBSD at least) it is. So direct
+ the signal to the correct thread and block it from this thread. */
+ #ifdef SIGIO
+ sigset_t new_mask;
+
+ sigemptyset (&new_mask);
+ sigaddset (&new_mask, SIGIO);
+ pthread_sigmask (SIG_BLOCK, &new_mask, 0);
+ pthread_kill (main_thread, SIGIO);
+ #endif
+ return;
+ }
+ #endif
+
interrupt_input_pending = 0;
while (1)
***************
*** 6800,6806 ****
{
/* Must preserve main program's value of errno. */
int old_errno = errno;
!
#if defined (USG) && !defined (POSIX_SIGNALS)
/* USG systems forget handlers when they are used;
must reestablish each time */
--- 6825,6846 ----
{
/* Must preserve main program's value of errno. */
int old_errno = errno;
! #if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
! extern pthread_t main_thread;
! if (pthread_self () != main_thread)
! {
! /* POSIX says any thread can receive the signal. On GNU/Linux that is
! not true, but for other systems (FreeBSD at least) it is. So direct
! the signal to the correct thread and block it from this thread. */
! sigset_t new_mask;
!
! sigemptyset (&new_mask);
! sigaddset (&new_mask, SIGIO);
! pthread_sigmask (SIG_BLOCK, &new_mask, 0);
! pthread_kill (main_thread, SIGIO);
! return;
! }
! #endif /* HAVE_GTK_AND_PTHREAD */
#if defined (USG) && !defined (POSIX_SIGNALS)
/* USG systems forget handlers when they are used;
must reestablish each time */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/keyboard.c [emacs-unicode-2],
Miles Bader <=