Explorar o código

d.mon: stop monitor on failure (https://trac.osgeo.org/grass/ticket/2509)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@63467 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa %!s(int64=10) %!d(string=hai) anos
pai
achega
6e3ceaa49e
Modificáronse 1 ficheiros con 10 adicións e 0 borrados
  1. 10 0
      display/d.mon/start.c

+ 10 - 0
display/d.mon/start.c

@@ -10,6 +10,7 @@
 static void start(const char *, const char *);
 static void start_wx(const char *, const char *, const char *,
 		     const char *, int, int);
+static void error_handler(void *);
 
 /* start file-based monitor */
 void start(const char *name, const char *output)
@@ -17,6 +18,9 @@ void start(const char *name, const char *output)
     char *env_name, output_path[GPATH_MAX];
     const char *output_name;
     
+    /* stop monitor on failure */
+    G_add_error_handler(error_handler, (char *)name);
+    
     if (!output) {
         if (D_open_driver() != 0)
             G_fatal_error(_("No graphics device selected. "
@@ -176,3 +180,9 @@ int start_mon(const char *name, const char *output, int select,
     
     return 0;
 }
+
+void error_handler(void *p)
+{
+    const char *name = (const char *) p;
+    stop_mon(name);
+}