# HG changeset patch # User Stefan Monnier # Date 1191010074 0 # Node ID 6e58c1c8c0fc97ed90523bc5a9d9d1f1ce8ccf85 # Parent 85eb2660cbe3cae108aaebbc5b2aa9c037b96e95 (Fgpm_mouse_start): Don't signal an error if already activated on this tty. (Fgpm_mouse_stop): Only deactivate if it was activated on this tty. diff -r 85eb2660cbe3 -r 6e58c1c8c0fc src/ChangeLog --- a/src/ChangeLog Fri Sep 28 19:47:02 2007 +0000 +++ b/src/ChangeLog Fri Sep 28 20:07:54 2007 +0000 @@ -1,5 +1,9 @@ 2007-09-28 Stefan Monnier + * term.c (Fgpm_mouse_start): Don't signal an error if already activated + on this tty. + (Fgpm_mouse_stop): Only deactivate if it was activated on this tty. + * term.c (mouse_face_window): Rename from Qmouse_face_window. Update all users. (handle_one_term_event): Use Gpm_DrawPointer. diff -r 85eb2660cbe3 -r 6e58c1c8c0fc src/term.c --- a/src/term.c Fri Sep 28 19:47:02 2007 +0000 +++ b/src/term.c Fri Sep 28 20:07:54 2007 +0000 @@ -2952,10 +2952,12 @@ ? (f)->terminal->display_info.tty : NULL); Gpm_Connect connection; + if (!tty) + error ("Gpm-mouse only works in the GNU/Linux console"); + if (gpm_tty == tty) + return Qnil; /* Already activated, nothing to do. */ if (gpm_tty) error ("Gpm-mouse can only be activated for one tty at a time"); - if (!tty) - error ("Gpm-mouse only works in the GNU/Linux console"); connection.eventMask = ~0; connection.defaultMask = ~GPM_HARD; @@ -2983,6 +2985,14 @@ doc: /* Close a connection to Gpm. */) () { + struct frame *f = SELECTED_FRAME (); + struct tty_display_info *tty + = ((f)->output_method == output_termcap + ? (f)->terminal->display_info.tty : NULL); + + if (!tty || gpm_tty != tty) + return Qnil; /* Not activated on this terminal, nothing to do. */ + if (gpm_fd >= 0) delete_gpm_wait_descriptor (gpm_fd); while (Gpm_Close()); /* close all the stack */