/* using std::experimental::nullopt;
using std::experimental::optional; */
+struct FloatingSurface
+{
+ std::string appid;
+ unsigned surface_id;
+ unsigned pid;
+};
+
class AppList
{
public:
If the WMClient should be more flexible, I think this param should be WMClient class
*/
void addClient(const std::string &appid, unsigned layer,
- unsigned surface,const std::string &role);
+ unsigned surface, const std::string &role);
+ void addClient(const std::string &appid, unsigned layer,
+ const std::string& layer_name, unsigned surface, const std::string &role);
void removeClient(const std::string &appid);
bool contains(const std::string &appid) const;
int countClient() const;
std::shared_ptr<WMClient> lookUpClient(const std::string &appid);
void removeSurface(unsigned surface);
std::string getAppID(unsigned surface, const std::string &role, bool *found) const;
+ WMError appendRole(const std::string &appid, const std::string &role);
+
+ // Floating surface
+ void addFloatingClient(const std::string &appid, unsigned layer, const std::string &role);
+ void addFloatingSurface(const std::string &appid, 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 currentRequestNumber() const;
void clientDump();
void reqDump();
+ void dumpFloatingSurfaces();
private:
std::vector<WMRequest> req_list;
std::unordered_map<std::string, std::shared_ptr<WMClient>> app2client;
unsigned current_req;
std::mutex mtx;
+ std::vector<struct FloatingSurface> floating_surfaces;
};
} // namespace wm