X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fapplist.hpp;h=b4ac9e0b4367ee00588a7a52eae3cd19e088d065;hb=refs%2Fheads%2Fsandbox%2Fknimitz%2Fset_role_pid_ver;hp=52dcfebfcc215acda9c4d3cfc530e334d1375eae;hpb=73d2a3437d332f239413a50dd745289b16de97ae;p=apps%2Fagl-service-windowmanager.git diff --git a/src/applist.hpp b/src/applist.hpp index 52dcfeb..b4ac9e0 100644 --- a/src/applist.hpp +++ b/src/applist.hpp @@ -20,55 +20,76 @@ #include #include #include -//#include -#include "windowmanager-client.hpp" +#include "wm_client.hpp" #include "request.hpp" +#include "wm_error.hpp" -namespace wm { +namespace wm +{ /* using std::experimental::nullopt; using std::experimental::optional; */ -class AppList { -public: +struct FloatingSurface +{ + unsigned surface_id; + unsigned pid; +}; + +class AppList +{ + public: AppList(); - virtual ~AppList(); - AppList(const AppList &obj) = delete; + virtual ~AppList() = default; + AppList(const AppList &obj); // Client Database Interface void addClient(const std::string &appid, const std::string &role); + void addClient(const std::string &appid, unsigned layer, unsigned surface, const std::string &role); void removeClient(const std::string &appid); - bool contains(const std::string &appid); - int countClient(); + bool contains(const std::string &appid) const; + int countClient() const; std::shared_ptr lookUpClient(const std::string &appid); + void removeSurface(unsigned surface); + WMError appendRole(const std::string &appid, const std::string &role, unsigned surface); + + // Floating surface & client control + void addFloatingClient(const std::string &appid, unsigned layer, const std::string &role); + void addFloatingSurface(unsigned surface, unsigned pid); + WMError popFloatingSurface(unsigned pid, unsigned *surface); + WMError popFloatingSurface(const std::string &appid, unsigned *surface); + void removeFloatingSurface(unsigned surface); // Request Interface - unsigned currentSequenceNumber(); - unsigned getSequenceNumber(const std::string &appid); + unsigned currentRequestNumber() const; + unsigned getRequestNumber(const std::string &appid) const; unsigned addAllocateRequest(WMRequest req); /* TODO: consider, which is better WMClient or std::string appid? if appid is key to manage resources, it is better to select std::string otherwise WMClient is better, IMO */ - bool requestFinished(); - bool setAction(unsigned req_num, const struct WMAction &action); - bool setAction(unsigned req_num, const std::string &appid, const std::string &role, const std::string &area, bool visible = true); - bool setEndDrawFinished(unsigned req_num, const std::string &appid, const std::string &role); - bool endDrawFullfilled(unsigned req_num); - void removeRequest(unsigned req_num); - void next(); - bool haveRequest(); + WMError setAction(unsigned req_num, const struct WMAction &action); + WMError setAction(unsigned req_num, const std::string &appid, const std::string &role, const std::string &area, bool visible = true); + bool setEndDrawFinished(unsigned req_num, const std::string &appid, const std::string &role); + bool endDrawFullfilled(unsigned req_num); + void removeRequest(unsigned req_num); + void next(); + bool haveRequest() const; + + struct WMTrigger getRequest(unsigned req_num, bool* found); + const std::vector &getActions(unsigned req_num, bool* found); - struct WMTrigger getRequest(unsigned req_num); - const std::vector& getActions(unsigned req_num); + void clientDump(); + void reqDump(); + void dumpFloatingSurfaces(); - void client_dump(); - void req_dump(); + private: + std::vector req_list; + std::unordered_map> app2client; + unsigned current_req; -private: - std::vector req_list; - std::unordered_map> client_list; - unsigned current_seq; + std::vector floating_surfaces; + //std::vector floating_clients; }; -} +} // namespace wm #endif // ALLOCATE_LIST_HPP \ No newline at end of file