From b7d4e1128a717364585c2de350c3edec17d61d66 Mon Sep 17 00:00:00 2001 From: Pierre Lespagnol <pierre.lespagnol@savoirfairelinux.com> Date: Wed, 6 Jan 2021 17:23:28 -0500 Subject: [PATCH] avadapter: fix screen sharing area for linux Change-Id: I49dd406a8eca39e628985ea3d69a9c31e59fdc74 --- src/avadapter.cpp | 52 +++++++++++++++++++++-------------------------- src/avadapter.h | 5 +++++ 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/avadapter.cpp b/src/avadapter.cpp index 4af8cf4bb..fe0dcea34 100644 --- a/src/avadapter.cpp +++ b/src/avadapter.cpp @@ -88,21 +88,8 @@ AvAdapter::shareEntireScreen(int screenNumber) return; QRect rect = screen->geometry(); - int display = 0; -#ifdef Q_OS_WIN - display = screenNumber; -#else - QString display_env {getenv("DISPLAY")}; - if (!display_env.isEmpty()) { - auto list = display_env.split(":", Qt::SkipEmptyParts); - // Should only be one display, so get the first one - if (list.size() > 0) { - display = list.at(0).toInt(); - } - } -#endif LRCInstance::avModel() - .setDisplay(display, rect.x(), rect.y(), rect.width(), rect.height(), getCurrentCallId()); + .setDisplay(getScreenNumber(), rect.x(), rect.y(), rect.width(), rect.height(), getCurrentCallId()); } void @@ -117,7 +104,7 @@ AvAdapter::shareAllScreens() height = scr->geometry().height(); } - LRCInstance::avModel().setDisplay(0, 0, 0, width, height, getCurrentCallId()); + LRCInstance::avModel().setDisplay(getScreenNumber(), 0, 0, width, height, getCurrentCallId()); } void @@ -183,18 +170,6 @@ void AvAdapter::shareScreenArea(unsigned x, unsigned y, unsigned width, unsigned height) { #ifdef Q_OS_LINUX - int display; - - // Get display - QString display_env {getenv("DISPLAY")}; - if (!display_env.isEmpty()) { - auto list = display_env.split(":", Qt::SkipEmptyParts); - // Should only be one display, so get the first one - if (list.size() > 0) { - display = list.at(0).toInt(); - } - } - // xrectsel will freeze all displays too fast so that the call // context menu will not be closed even closed signal is emitted // use timer to wait until popup is closed @@ -202,7 +177,7 @@ AvAdapter::shareScreenArea(unsigned x, unsigned y, unsigned width, unsigned heig x = y = width = height = 0; xrectsel(&x, &y, &width, &height); - LRCInstance::avModel().setDisplay(0, + LRCInstance::avModel().setDisplay(getScreenNumber(), x, y, width < 128 ? 128 : width, @@ -210,7 +185,7 @@ AvAdapter::shareScreenArea(unsigned x, unsigned y, unsigned width, unsigned heig getCurrentCallId()); }); #else - LRCInstance::avModel().setDisplay(0, + LRCInstance::avModel().setDisplay(getScreenNumber(), x, y, width < 128 ? 128 : width, @@ -302,3 +277,22 @@ AvAdapter::slotDeviceEvent() deviceListSize_ = currentDeviceListSize; } + +int +AvAdapter::getScreenNumber() const +{ + int display = 0; + +#ifdef Q_OS_LINUX + // Get display + QString display_env {getenv("DISPLAY")}; + if (!display_env.isEmpty()) { + auto list = display_env.split(":", Qt::SkipEmptyParts); + // Should only be one display, so get the first one + if (list.size() > 0) { + display = list.at(0).toInt(); + } + } +#endif + return display; +} diff --git a/src/avadapter.h b/src/avadapter.h index d3e961d60..45bde4577 100644 --- a/src/avadapter.h +++ b/src/avadapter.h @@ -107,4 +107,9 @@ private: * Device changed slot. */ void slotDeviceEvent(); + + /* + * Get the screen number + */ + int getScreenNumber() const; }; -- GitLab