* @attention This function should be called once for the app
* Caller should take care not to be called more than once.
*/
-void AppList::addClient(const std::string &appid, unsigned layer, unsigned surface, const std::string &role)
+void AppList::addClient(const string &appid, unsigned layer, unsigned surface, const string &role)
{
std::lock_guard<std::mutex> lock(this->mtx);
shared_ptr<WMClient> client = std::make_shared<WMClient>(appid, layer, surface, role);
// =================== Floating(Temporary) surface/client API ===================
-WMError AppList::popFloatingSurface(const std::string &appid, unsigned *surface)
+WMError AppList::popFloatingSurface(const string &appid, unsigned *surface)
{
HMI_ERROR("wm", "This function is not implemented");
return WMError::SUCCESS;
}
-void AppList::addFloatingClient(const std::string &appid, unsigned layer, const std::string &role)
+void AppList::addFloatingClient(const string &appid, unsigned layer, const string &role)
{
}
-void AppList::addFloatingSurface(unsigned surface, unsigned pid)
+void AppList::addFloatingSurface(const string &appid, unsigned surface, unsigned pid)
{
- struct FloatingSurface fsurface{surface, pid};
+ struct FloatingSurface fsurface{appid, surface, pid};
this->floating_surfaces.push_back(fsurface);
this->dumpFloatingSurfaces();
}
void AppList::removeFloatingSurface(unsigned surface)
{
this->dumpFloatingSurfaces();
- auto fwd_itr = std::remove_if(this->floating_surfaces.begin(), this->floating_surfaces.end(),
- [surface](FloatingSurface x) {
- return x.surface_id == surface;
- });
+ auto fwd_itr = std::remove_if(
+ this->floating_surfaces.begin(), this->floating_surfaces.end(),
+ [surface](FloatingSurface x) {
+ return x.surface_id == surface;
+ });
if(fwd_itr != this->floating_surfaces.cend()){
HMI_INFO("wm", "remove floating surface: %d", surface);
}
this->floating_surfaces.erase(fwd_itr, this->floating_surfaces.end());
}
-WMError AppList::appendRole(const std::string &id, const std::string &role, unsigned surface)
+WMError AppList::appendRole(const string &id, const string &role, unsigned surface)
{
WMError wm_err = WMError::NO_ENTRY;
if (this->contains(id))
struct FloatingSurface
{
+ std::string appid;
unsigned surface_id;
unsigned pid;
};
// Floating surface
void addFloatingClient(const std::string &appid, unsigned layer, const std::string &role);
- void addFloatingSurface(unsigned surface, unsigned pid);
+ 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);
*/
void WindowManager::surface_created(uint32_t surface_id)
{
+ // For set role function
+ HMI_DEBUG("wm", "Get surface pid");
+ this->controller->get_surface_properties(surface_id);
+
auto layer_id = this->layers.get_layer_id(surface_id);
if (!layer_id)
{
this->controller->layers[*layer_id]->add_surface(surface_id);
this->layout_commit();
+
+ // search pid from surfaceID
+
+ // pick up appid from pid from application manager
+
+ // check appid then add it to the client
}
void WindowManager::surface_removed(uint32_t surface_id)