X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=libhomescreen%2Fsrc%2Flibhomescreen.cpp;h=ae8f563be6f84464ae52e3f3de4fbfd785896359;hb=5eee2e3e4b208ab8287e3fc2625d2055e67473fa;hp=978a42c7892d05e9761780d0c87899d53bcee099;hpb=949bf001944f462b4fbf8d28ee7e9643c9888bee;p=staging%2FHomeScreen.git diff --git a/libhomescreen/src/libhomescreen.cpp b/libhomescreen/src/libhomescreen.cpp index 978a42c..ae8f563 100644 --- a/libhomescreen/src/libhomescreen.cpp +++ b/libhomescreen/src/libhomescreen.cpp @@ -1,4 +1,6 @@ +extern "C" { #include "homescreen.h" // generated from xml +} #include "include/libhomescreen.hpp" #include @@ -27,6 +29,66 @@ LibHomeScreen::~LibHomeScreen() g_object_unref(mp_libHomeScreenHomescreen_Proxy); } +std::vector LibHomeScreen::getAllSurfacesOfProcess(int pid) +{ + std::vector 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_surface_status_sync( + mp_libHomeScreenHomescreen_Proxy, + surfaceId, + &result, + NULL, + &err); + + if (NULL != err) + { + fprintf(stderr, "Unable to call getSurfaceStatus: %s\n", err->message); + } + + return result; +} + void LibHomeScreen::hardKeyPressed(int key) { GError *err = NULL; @@ -43,17 +105,56 @@ void LibHomeScreen::hardKeyPressed(int key) } } -void LibHomeScreen::toggleFullScreen() +void LibHomeScreen::renderSurfaceToArea(int surfaceId, int layoutArea) +{ + GError *err = NULL; + + lib_home_screen_homescreen_call_render_surface_to_area_sync( + mp_libHomeScreenHomescreen_Proxy, + surfaceId, + layoutArea, + NULL, + &err); + + if (NULL != err) + { + fprintf(stderr, "Unable to call renderSurfaceToArea: %s\n", err->message); + } +} + +bool LibHomeScreen::renderAppToAreaAllowed(int appCategory, int layoutArea) +{ + gboolean result = true; + GError *err = NULL; + + lib_home_screen_homescreen_call_render_app_to_area_allowed_sync( + mp_libHomeScreenHomescreen_Proxy, + appCategory, + layoutArea, + &result, + NULL, + &err); + + if (NULL != err) + { + fprintf(stderr, "Unable to call renderAppToAreaAllowed: %s\n", err->message); + } + + return result; +} + +void LibHomeScreen::requestSurfaceIdToFullScreen(int surfaceId) { GError *err = NULL; - lib_home_screen_homescreen_call_toggle_full_screen_sync( + lib_home_screen_homescreen_call_request_surface_id_to_full_screen_sync( mp_libHomeScreenHomescreen_Proxy, + surfaceId, NULL, &err); if (NULL != err) { - fprintf(stderr, "Unable to call toggleFullScreen: %s\n", err->message); + fprintf(stderr, "Unable to call requestSurfaceIdToFullScreen: %s\n", err->message); } }