X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fapp.hpp;h=2fe4383be6093992a3992a6166571e13fabb52bf;hb=refs%2Fheads%2Fsandbox%2Fknimitz%2Fset_role_pid_ver;hp=42758c9b33dc26bbd6fd35d15f63bbedfacfd94c;hpb=dfe4aee045113eceaeabd327291f94583e7b13d3;p=apps%2Fagl-service-windowmanager.git diff --git a/src/app.hpp b/src/app.hpp index 42758c9..2fe4383 100644 --- a/src/app.hpp +++ b/src/app.hpp @@ -33,6 +33,7 @@ #include "wayland_ivi_wm.hpp" #include "hmi-debug.h" #include "request.hpp" +#include "wm_error.hpp" namespace wl { @@ -69,6 +70,8 @@ extern const char kKeyHeightPixel[]; extern const char kKeyWidthMm[]; extern const char kKeyHeightMm[]; +class AppList; + struct id_allocator { unsigned next = 1; @@ -158,7 +161,9 @@ struct App Event_SyncDraw, Event_FlushDraw, - Event_Val_Max = Event_FlushDraw, + Event_Error, + + Event_Val_Max = Event_Error, }; const std::vector kListEventName{ @@ -167,7 +172,8 @@ struct App "visible", "invisible", "syncdraw", - "flushdraw"}; + "flushdraw", + "error"}; struct controller_hooks chooks; @@ -201,7 +207,7 @@ struct App std::vector surface_bg; explicit App(wl::display *d); - ~App() = default; + ~App()/* = default */; App(App const &) = delete; App &operator=(App const &) = delete; @@ -216,6 +222,7 @@ struct App result api_request_surface(char const *appid, char const *drawing_name); char const *api_request_surface(char const *appid, char const *drawing_name, char const *ivi_id); + bool api_set_role(char const *appid, char const *drawing_name, unsigned pid); void api_activate_surface(char const *appid, char const *drawing_name, char const *drawing_area, const reply_func &reply); void api_deactivate_surface(char const *appid, char const *drawing_name, const reply_func &reply); void api_enddraw(char const *appid, char const *drawing_name); @@ -228,10 +235,13 @@ struct App // Events from the compositor we are interested in void surface_created(uint32_t surface_id); void surface_removed(uint32_t surface_id); + void surface_properties(uint32_t surface_id, uint32_t pid); // Do not use this function //static int processTimerHandler(sd_event_source *s, uint64_t usec, void *userdata); void timerHandler(); + void removeClient(const std::string &appid); + bool subscribeEventForApp(const std::string &appid, afb_req req, const std::string &evname); private: optional lookup_id(char const *name); @@ -256,9 +266,9 @@ struct App void emit_invisible(char const *label); void emit_visible(char const *label); - bool do_transition(unsigned sequence_number); + WMError do_transition(unsigned sequence_number); - void do_enddraw(unsigned sequence_number); + void do_enddraw(unsigned req_num); void process_request(); void set_timer(); void stop_timer(); @@ -276,9 +286,13 @@ struct App // The following function is temporary. // Then will be removed when layermanager is finished void lm_layout_change(const char *drawing_name); - bool lm_layout_change(const struct WMAction &action); - bool lm_release(const struct WMAction &action); + WMError lm_layout_change(const struct WMAction &action); + WMError lm_release(const struct WMAction &action); void lm_enddraw(const char *drawing_name); + + private: + //std::unique_ptr app_list; + //AppList *app_list; }; } // namespace wm