emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master aaa2d0db18: Improve return value of `haiku-roster-launch'


From: Po Lu
Subject: master aaa2d0db18: Improve return value of `haiku-roster-launch'
Date: Sun, 15 May 2022 04:34:07 -0400 (EDT)

branch: master
commit aaa2d0db18509b7d2f1e35cbc9dc2b4443f1cce4
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Improve return value of `haiku-roster-launch'
    
    * src/haikuselect.c (Fhaiku_roster_launch): Return
    `already-running' if no PID is available since the target
    application is already running.
    (syms_of_haikuselect): New defsym.
---
 src/haikuselect.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/haikuselect.c b/src/haikuselect.c
index 0c808bdb93..f7618aa4db 100644
--- a/src/haikuselect.c
+++ b/src/haikuselect.c
@@ -778,8 +778,9 @@ ignored if it is dropped on top of FRAME.  */)
 DEFUN ("haiku-roster-launch", Fhaiku_roster_launch, Shaiku_roster_launch,
        2, 2, 0,
        doc: /* Launch an application associated with FILE-OR-TYPE.
-Return the process ID of the application, or nil if no application was
-launched.
+Return the process ID of any process created, the symbol
+`already-running' if ARGS was sent to a program that's already
+running, or nil if launching the application failed.
 
 FILE-OR-TYPE can either be a string denoting a MIME type, or a list
 with one argument FILE, denoting a file whose associated application
@@ -850,9 +851,16 @@ after it starts.  */)
                         &team_id);
   unblock_input ();
 
+  /* `be_roster_launch' can potentially take a while in IO, but
+     signals from async input will interrupt that operation.  If the
+     user wanted to quit, act like it.  */
+  maybe_quit ();
+
   if (rc == B_OK)
     return SAFE_FREE_UNBIND_TO (depth,
                                make_uint (team_id));
+  else if (rc == B_ALREADY_RUNNING)
+    return Qalready_running;
 
   return SAFE_FREE_UNBIND_TO (depth, Qnil);
 }
@@ -913,6 +921,7 @@ used to retrieve the current position of the mouse.  */);
   DEFSYM (Qsize_t, "size_t");
   DEFSYM (Qssize_t, "ssize_t");
   DEFSYM (Qpoint, "point");
+  DEFSYM (Qalready_running, "already-running");
 
   defsubr (&Shaiku_selection_data);
   defsubr (&Shaiku_selection_put);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]