void DSWaylandTizenPolicyPrivate::tizen_policy_add_aux_hint(Resource *resource, struct ::wl_resource *surface, int32_t id, const std::string &name, const std::string &value)
{
- DSLOG_DBG("TizenPolicyPriv", "");
+ DSLOG_DBG("TizenPolicyPriv", "Add aux hint (id:%d, key:%s, value:%s)", id, name.c_str(), value.c_str());
+
+ DSWaylandSurface *dswlSurface = DSWaylandSurface::fromWlResource(surface);
+ if (!dswlSurface) return;
+ if (!__wm) return;
+
+ __wm->addWindowAuxHint(dswlSurface, id, name, value);
}
void DSWaylandTizenPolicyPrivate::tizen_policy_change_aux_hint(Resource *resource, struct ::wl_resource *surface, int32_t id, const std::string &value)
{
- DSLOG_DBG("TizenPolicyPriv", "");
+ DSLOG_DBG("TizenPolicyPriv", "Change aux hint (id:%d, value:%s)", id, value.c_str());
+
+ DSWaylandSurface *dswlSurface = DSWaylandSurface::fromWlResource(surface);
+ if (!dswlSurface) return;
+ if (!__wm) return;
+
+ __wm->changeWindowAuxHint(dswlSurface, id, value);
}
void DSWaylandTizenPolicyPrivate::tizen_policy_del_aux_hint(Resource *resource, struct ::wl_resource *surface, int32_t id)
{
- DSLOG_DBG("TizenPolicyPriv", "");
+ DSLOG_DBG("TizenPolicyPriv", "Delete aux hint (id:%d)", id);
+
+ DSWaylandSurface *dswlSurface = DSWaylandSurface::fromWlResource(surface);
+ if (!dswlSurface) return;
+ if (!__wm) return;
+
+ __wm->removeWindowAuxHint(dswlSurface, id);
}
void DSWaylandTizenPolicyPrivate::tizen_policy_get_supported_aux_hints(Resource *resource, struct ::wl_resource *surface)
{
- DSLOG_DBG("TizenPolicyPriv", "");
+ DSLOG_DBG("TizenPolicyPriv", "resource:%p, surface:%p", resource, surface);
+
+ DSWaylandSurface *dswlSurface = DSWaylandSurface::fromWlResource(surface);
+ if (!dswlSurface) return;
+ if (!__wm) return;
+
+ struct wl_array hints;
+ int len;
+ int numOfHints = 0;
+ char *p;
+ std::list<std::string> hints_list;
+
+ hints_list = __wm->getWindowSupportedAuxHints(dswlSurface);
+ numOfHints = hints_list.size();
+
+ wl_array_init(&hints);
+ for (std::string hintName : hints_list)
+ {
+ len = hintName.length() + 1;
+ p = (char*)wl_array_add(&hints, len);
+
+ if (p == NULL)
+ break;
+ hintName.copy(p, len);
+ }
+
+ send_supported_aux_hints(resource->handle, surface, &hints, numOfHints);
+ wl_array_release(&hints);
}
void DSWaylandTizenPolicyPrivate::tizen_policy_set_background_state(Resource *resource, uint32_t pid)