mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
Ensure sizes passed to OBS are actual pixel sizes
This should fix GS rendering on surfaces on HiDPI displays; moving windows between displays with differing pixel ratios currently requires a manual resize
This commit is contained in:
parent
2fc810fd09
commit
f447a44f9c
|
@ -40,3 +40,8 @@ static inline void GetScaleAndCenterPos(
|
|||
x = windowCX/2 - newCX/2;
|
||||
y = windowCY/2 - newCY/2;
|
||||
}
|
||||
|
||||
static inline QSize GetPixelSize(QWidget *widget)
|
||||
{
|
||||
return widget->size() * widget->devicePixelRatio();
|
||||
}
|
||||
|
|
|
@ -433,7 +433,7 @@ bool OBSBasic::ResetVideo()
|
|||
//required to make opengl display stuff on osx(?)
|
||||
ResizePreview(ovi.base_width, ovi.base_height);
|
||||
|
||||
QSize size = ui->preview->size();
|
||||
QSize size = GetPixelSize(ui->preview);
|
||||
ovi.window_width = size.width();
|
||||
ovi.window_height = size.height();
|
||||
|
||||
|
@ -515,7 +515,7 @@ void OBSBasic::ResizePreview(uint32_t cx, uint32_t cy)
|
|||
QSize targetSize;
|
||||
|
||||
/* resize preview panel to fix to the top section of the window */
|
||||
targetSize = ui->preview->size();
|
||||
targetSize = GetPixelSize(ui->preview);
|
||||
GetScaleAndCenterPos(int(cx), int(cy),
|
||||
targetSize.width(), targetSize.height(),
|
||||
previewX, previewY, previewScale);
|
||||
|
@ -555,7 +555,7 @@ void OBSBasic::timerEvent(QTimerEvent *event)
|
|||
killTimer(resizeTimer);
|
||||
resizeTimer = 0;
|
||||
|
||||
QSize size = ui->preview->size();
|
||||
QSize size = GetPixelSize(ui->preview);
|
||||
obs_resize(size.width(), size.height());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ void OBSBasicProperties::timerEvent(QTimerEvent *event)
|
|||
killTimer(resizeTimer);
|
||||
resizeTimer = 0;
|
||||
|
||||
QSize size = ui->preview->size();
|
||||
QSize size = GetPixelSize(ui->preview);
|
||||
obs_display_resize(display, size.width(), size.height());
|
||||
}
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ void OBSBasicProperties::Init()
|
|||
show();
|
||||
App()->processEvents();
|
||||
|
||||
QSize previewSize = ui->preview->size();
|
||||
QSize previewSize = GetPixelSize(ui->preview);
|
||||
init_data.cx = uint32_t(previewSize.width());
|
||||
init_data.cy = uint32_t(previewSize.height());
|
||||
init_data.format = GS_RGBA;
|
||||
|
|
Loading…
Reference in a new issue