[hwcomposer] Get refresh rate

master
Martin Gräßlin 9 years ago
parent 53dcd98b8b
commit 67734050e6

@ -396,12 +396,13 @@ static KWayland::Server::OutputInterface *createOutput(hwc_composer_device_1_t *
return nullptr;
}
int32_t attr_values[4];
int32_t attr_values[5];
uint32_t attributes[] = {
HWC_DISPLAY_WIDTH,
HWC_DISPLAY_HEIGHT,
HWC_DISPLAY_DPI_X,
HWC_DISPLAY_DPI_Y,
HWC_DISPLAY_VSYNC_PERIOD ,
HWC_DISPLAY_NO_ATTRIBUTE
};
device->getDisplayAttributes(device, 0, configs[0], attributes, attr_values);
@ -412,8 +413,7 @@ static KWayland::Server::OutputInterface *createOutput(hwc_composer_device_1_t *
using namespace KWayland::Server;
OutputInterface *o = waylandServer()->display()->createOutput(waylandServer()->display());
// TODO: get refresh rate
o->addMode(pixel, OutputInterface::ModeFlag::Current | OutputInterface::ModeFlag::Preferred);
o->addMode(pixel, OutputInterface::ModeFlag::Current | OutputInterface::ModeFlag::Preferred, (attr_values[4] == 0) ? 60000 : 10E11/attr_values[4]);
if (attr_values[2] != 0 && attr_values[3] != 0) {
static const qreal factor = 25.4;
@ -454,7 +454,9 @@ void HwcomposerBackend::init()
return;
}
m_displaySize = output->pixelSize();
m_refreshRate = output->refreshRate();
qCDebug(KWIN_HWCOMPOSER) << "Display size:" << m_displaySize;
qCDebug(KWIN_HWCOMPOSER) << "Refresh rate:" << m_refreshRate;
initInput();

@ -59,6 +59,9 @@ public:
hwc_composer_device_1_t *device() const {
return m_device;
}
int refreshRate() const {
return m_refreshRate;
}
private Q_SLOTS:
void toggleBlankOutput();
@ -70,6 +73,7 @@ private:
hwc_composer_device_1_t *m_device = nullptr;
AndroidEventListener *m_inputListener = nullptr;
bool m_outputBlank = true;
int m_refreshRate = 60000;
};
class HwcomposerWindow : public HWComposerNativeWindow

@ -65,4 +65,10 @@ int HwcomposerScreens::number(const QPoint &pos) const
return 0;
}
float HwcomposerScreens::refreshRate(int screen) const
{
Q_UNUSED(screen)
return m_backend->refreshRate() / 1000.0f;
}
}

@ -36,6 +36,7 @@ public:
int number(const QPoint &pos) const override;
QSize size(int screen) const override;
void updateCount() override;
float refreshRate(int screen) const override;
private:
HwcomposerBackend *m_backend;

Loading…
Cancel
Save