summaryrefslogtreecommitdiffstats
path: root/src/qlibwindowmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qlibwindowmanager.cpp')
-rw-r--r--src/qlibwindowmanager.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/qlibwindowmanager.cpp b/src/qlibwindowmanager.cpp
index fff99c4..0d0f8a6 100644
--- a/src/qlibwindowmanager.cpp
+++ b/src/qlibwindowmanager.cpp
@@ -40,6 +40,30 @@ int QLibWindowmanager::init(int port, const QString &token) {
return ret_init;
}
+int QLibWindowmanager::setRole(const QString &role, bool request) {
+ this->graphic_role = role.toStdString();
+ int ret = -1;
+ int surface_id = this->wm->setRole(this->graphic_role.c_str(), request);
+ if(request)
+ {
+ if(surface_id < 0){
+ qDebug("failed to get surfaceID");
+ ret = -1;
+ }
+ else {
+ qDebug("surfaceID is set to %d", surface_id);
+ char buf[65]; // surface id is under 64bit(1.84E19,) so 65 is sufficient for buffer
+ snprintf(buf, 65, "%d", surface_id);
+ setenv("QT_IVI_SURFACE_ID", buf, 1);
+ ret = surface_id;
+ }
+ }
+ else {
+ ret = surface_id;
+ }
+ return ret;
+}
+
int QLibWindowmanager::requestSurface(const QString &role) {
this->graphic_role = role.toStdString();
int surface_id = this->wm->requestSurface(this->graphic_role.c_str());