Files
dragonpilot/selfdrive/ui/qt/qt_window.cc
kernyan 983cc14174 ui: auto scaling on resolution below 1920 x 1080 (#22842)
* ui: resizable on PC by mouse drag

* Revert "ui: resizable on PC by mouse drag"

This reverts commit 56aa8254a2ae3f3b8a4b1f5957a51b2258780e97.

* ui: auto scaling on resolution below 1920 x 1080

special case when on PC and screen resolution is exactly 1920 x 1080,
we don't use fixed-sized window to account for taskbar/menubar area

* Update qt_window.cc

set maximum window size

* keep SCALE

Co-authored-by: Willem Melching <willem.melching@gmail.com>
2021-11-11 13:25:12 +01:00

31 lines
1021 B
C++

#include "selfdrive/ui/qt/qt_window.h"
void setMainWindow(QWidget *w) {
const QSize sz = QGuiApplication::primaryScreen()->size();
if (Hardware::PC() && sz.width() <= 1920 && sz.height() <= 1080 && getenv("SCALE") == nullptr) {
w->setMinimumSize(QSize(640, 480)); // allow resize smaller than fullscreen
w->setMaximumSize(QSize(2160, 1080));
w->resize(sz);
} else {
const float scale = util::getenv("SCALE", 1.0f);
const bool wide = (sz.width() >= WIDE_WIDTH) ^ (getenv("INVERT_WIDTH") != NULL);
w->setFixedSize(QSize(wide ? WIDE_WIDTH : 1920, 1080) * scale);
}
w->show();
#ifdef QCOM2
QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface();
wl_surface *s = reinterpret_cast<wl_surface*>(native->nativeResourceForWindow("surface", w->windowHandle()));
wl_surface_set_buffer_transform(s, WL_OUTPUT_TRANSFORM_270);
wl_surface_commit(s);
w->showFullScreen();
#endif
}
extern "C" {
void set_main_window(void *w) {
setMainWindow((QWidget*)w);
}
}