X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=libhomescreen%2Fsrc%2Flibhomescreen.cpp;h=03c4baf0427e0a38843965e424f1375312600588;hb=337319e30026b0bae453dc7363f27469fa2ab526;hp=39af1c3ff96acc63c68d07414ddc446dbc2c563d;hpb=ec688535558c31989e7da221b858328b2e0766c8;p=staging%2FHomeScreen.git diff --git a/libhomescreen/src/libhomescreen.cpp b/libhomescreen/src/libhomescreen.cpp index 39af1c3..03c4baf 100644 --- a/libhomescreen/src/libhomescreen.cpp +++ b/libhomescreen/src/libhomescreen.cpp @@ -29,27 +29,63 @@ LibHomeScreen::~LibHomeScreen() g_object_unref(mp_libHomeScreenHomescreen_Proxy); } -sRectangle LibHomeScreen::getLayoutRenderAreaForSurfaceId(int surfaceId) +std::list LibHomeScreen::getAllSurfacesOfProcess(int pid) { - sRectangle result; + std::list result; + + GError *err = NULL; + + GVariant *out_surfaceIds; + + lib_home_screen_homescreen_call_get_all_surfaces_of_process_sync( + mp_libHomeScreenHomescreen_Proxy, + pid, + &out_surfaceIds, + NULL, + &err); + + if (NULL != err) + { + fprintf(stderr, "Unable to call getAllSurfacesOfProcess: %s\n", err->message); + } + + + GVariant *element; + GVariantIter iter; + int i; + + if (g_variant_iter_init(&iter, out_surfaceIds)) + { + while ((element = g_variant_iter_next_value(&iter)) != NULL) + { + g_variant_get(element, "i", &i); + result.push_back(i); + g_variant_unref(element); + } + } + + return result; +} + +int LibHomeScreen::getSurfaceStatus(int surfaceId) +{ + int result; GError *err = NULL; GVariant *out_renderArea; - lib_home_screen_homescreen_call_get_layout_render_area_for_surface_id_sync( + lib_home_screen_homescreen_call_get_surface_status_sync( mp_libHomeScreenHomescreen_Proxy, surfaceId, - &out_renderArea, + &result, NULL, &err); if (NULL != err) { - fprintf(stderr, "Unable to call getLayoutRenderAreaForSurfaceId: %s\n", err->message); + fprintf(stderr, "Unable to call getSurfaceStatus: %s\n", err->message); } - g_variant_get(out_renderArea, "(iiii)", result.x, result.y, result.width, result.height); - return result; } @@ -69,21 +105,14 @@ void LibHomeScreen::hardKeyPressed(int key) } } -void LibHomeScreen::renderSurfaceToArea(int surfaceId, const sRectangle &renderArea) +void LibHomeScreen::renderSurfaceToArea(int surfaceId, int layoutArea) { GError *err = NULL; - GVariant *variant; - GVariantBuilder *builder; - builder = g_variant_builder_new(G_VARIANT_TYPE("(iiii)")); - g_variant_builder_add(builder, "(iiii)", renderArea.x, renderArea.y, renderArea.width, renderArea.height); - variant = g_variant_new("(iiii)", builder); - g_variant_builder_unref(builder); - lib_home_screen_homescreen_call_render_surface_to_area_sync( mp_libHomeScreenHomescreen_Proxy, surfaceId, - variant, + layoutArea, NULL, &err); @@ -93,6 +122,27 @@ void LibHomeScreen::renderSurfaceToArea(int surfaceId, const sRectangle &renderA } } +bool LibHomeScreen::renderSurfaceToAreaAllowed(int surfaceId, int layoutArea) +{ + gboolean result = true; + GError *err = NULL; + + lib_home_screen_homescreen_call_render_surface_to_area_allowed_sync( + mp_libHomeScreenHomescreen_Proxy, + surfaceId, + layoutArea, + &result, + NULL, + &err); + + if (NULL != err) + { + fprintf(stderr, "Unable to call renderSurfaceToArea: %s\n", err->message); + } + + return result; +} + void LibHomeScreen::requestSurfaceIdToFullScreen(int surfaceId) { GError *err = NULL;