File indexing completed on 2024-05-12 09:36:14
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Alejandro Fiestas Olivares <afiestas@kde.org> 0003 * SPDX-FileCopyrightText: 2012, 2013 Daniel Vrátil <dvratil@redhat.com> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-or-later 0006 */ 0007 #include "xrandrscreen.h" 0008 0009 #include "xrandr.h" 0010 #include "xrandrconfig.h" 0011 0012 #include "../xcbwrapper.h" 0013 0014 #include "screen.h" 0015 0016 #include <QtGui/private/qtx11extras_p.h> 0017 0018 XRandRScreen::XRandRScreen(XRandRConfig *config) 0019 : QObject(config) 0020 { 0021 XCB::ScreenSize size(XRandR::rootWindow()); 0022 m_maxSize = QSize(size->max_width, size->max_height); 0023 m_minSize = QSize(size->min_width, size->min_height); 0024 update(); 0025 } 0026 0027 XRandRScreen::~XRandRScreen() 0028 { 0029 } 0030 0031 void XRandRScreen::update() 0032 { 0033 const int appScreen = QX11Info::appScreen(); 0034 m_id = appScreen; 0035 xcb_screen_t *screen = XCB::screenOfDisplay(XCB::connection(), appScreen); 0036 m_currentSize = QSize(screen->width_in_pixels, screen->height_in_pixels); 0037 } 0038 0039 void XRandRScreen::update(const QSize &size) 0040 { 0041 m_currentSize = size; 0042 } 0043 0044 QSize XRandRScreen::currentSize() 0045 { 0046 return m_currentSize; 0047 } 0048 0049 KScreen::ScreenPtr XRandRScreen::toKScreenScreen() const 0050 { 0051 KScreen::ScreenPtr kscreenScreen(new KScreen::Screen); 0052 kscreenScreen->setId(m_id); 0053 kscreenScreen->setMaxSize(m_maxSize); 0054 kscreenScreen->setMinSize(m_minSize); 0055 kscreenScreen->setCurrentSize(m_currentSize); 0056 0057 XCB::ScopedPointer<xcb_randr_get_screen_resources_reply_t> screenResources(XRandR::screenResources()); 0058 kscreenScreen->setMaxActiveOutputsCount(screenResources->num_crtcs); 0059 0060 return kscreenScreen; 0061 } 0062 0063 void XRandRScreen::updateKScreenScreen(KScreen::ScreenPtr &screen) const 0064 { 0065 screen->setCurrentSize(m_currentSize); 0066 } 0067 0068 #include "moc_xrandrscreen.cpp"