app/binding: implement crude syndraw/enddraw/flushdraw sequence
[staging/windowmanager.git] / src / afb_binding_api.cpp
index 41eed13..f49d826 100644 (file)
@@ -64,7 +64,12 @@ binding_api::result_type binding_api::deactivate_surface(char const* drawing_nam
 
 binding_api::result_type binding_api::enddraw(char const* drawing_name) {
    logdebug("%s drawing_name %s", __func__, drawing_name);
-   return Err<json_object*>("not implemented");
+   auto r = this->app->enddraw(drawing_name);
+   if (r != nullptr) {
+      logdebug("%s failed with error: %s", __func__, r);
+      return Err<json_object *>(r);
+   }
+   return Ok(json_object_new_object());
 }
 
 binding_api::result_type binding_api::list_drawing_names() {
@@ -94,8 +99,10 @@ binding_api::result_type binding_api::debug_status() {
 
 binding_api::result_type binding_api::debug_terminate() {
    logdebug("%s", __func__);
-   raise(SIGKILL);  // XXX afb-daemon kills it's pgroup using TERM, which
-                    // doesn't play well with perf
+   if (getenv("WINMAN_DEBUG_TERMINATE") != nullptr) {
+      raise(SIGKILL);  // XXX afb-daemon kills it's pgroup using TERM, which
+                       // doesn't play well with perf
+   }
    return Ok(json_object_new_object());
 }