2007-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
+ * 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.
? (f)->terminal->display_info.tty : NULL);
Gpm_Connect connection;
- 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");
+ 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");
connection.eventMask = ~0;
connection.defaultMask = ~GPM_HARD;
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 */