aboutsummaryrefslogtreecommitdiffstats
path: root/src/window_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/window_manager.cpp')
-rw-r--r--src/window_manager.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/window_manager.cpp b/src/window_manager.cpp
index 32b8e25..deda66e 100644
--- a/src/window_manager.cpp
+++ b/src/window_manager.cpp
@@ -524,19 +524,30 @@ bool WindowManager::api_client_set_render_order(char const* appid, const vector<
return ret;
}
-string WindowManager::api_client_attach_service_surface
- (const char* appid, const char* dest, const char* service_surface)
+result<json_object *> WindowManager::api_client_attach_service_surface
+ (const char* appid, const char* dest, const char* service_surface, bool req_sid)
{
string uuid, s_dest = dest;
+ unsigned surface = 0;
auto client = g_app_list.lookUpClient(s_dest);
if(!client)
{
HMI_ERROR("Failed to look up destination [%s]", dest);
- return uuid;
+ return Err<json_object *>("destination apploication is null");
}
uuid = client->attachTmpServiceSurface(appid, service_surface);
+ if(req_sid)
+ {
+ // name does not exist yet, allocate surface id...
+ surface = int(this->id_alloc.generate_id(uuid));
+ }
this->tmp_services.emplace_back(TmpService{appid, dest, service_surface, uuid});
- return uuid;
+
+ json_object *object = json_object_new_object();
+ json_object_object_add(object, "uuid", json_object_new_string(uuid.c_str()));
+ json_object_object_add(object, "surface", json_object_new_int(surface));
+
+ return Ok<json_object *>(object);
}
result<json_object *> WindowManager::api_get_display_info()