diff options
Diffstat (limited to 'src/x.cpp')
-rw-r--r-- | src/x.cpp | 42 |
1 files changed, 41 insertions, 1 deletions
@@ -16,8 +16,15 @@ namespace X _screenResources = XRRGetScreenResourcesCurrent(_display, DefaultRootWindow(_display)); /* Get informations about Xserver */ + updateScreenResources(); + } + + //___________________________________________________________________________ + void Screen::updateScreenResources() + { // Create the modemap + _modeMap.clear(); for (int i = 0; i < _screenResources->nmode; ++i) { _modeMap.insert( @@ -27,6 +34,7 @@ namespace X } // Create crtcMap + _crtcMap.clear(); for (int i = 0; i < _screenResources->ncrtc; ++i) { _crtcMap.insert( @@ -36,6 +44,7 @@ namespace X } // Create outputMap + _outputMap.clear(); for (int i = 0; i < _screenResources->noutput; ++i) { _outputMap.insert( @@ -45,11 +54,42 @@ namespace X } // Create connectedOutputMap + _connectedOutputList.clear(); for (OutputMap::iterator it = _outputMap.begin(); it != _outputMap.end(); ++it) if ( (*it)->isConnected() ) _connectedOutputList.push_back((*it)->_id); + } + //___________________________________________________________________________ + void Screen::createMode( + unsigned int resX, + unsigned int resY, + unsigned long dotClock, + unsigned int hSyncStart, + unsigned int hSyncEnd, + unsigned int hTotal, + unsigned int vSyncStart, + unsigned int vSyncEnd, + unsigned int vTotal, + QString name) + { + XRRModeInfo m; + m.width = resX; + m.height = resY; + m.dotClock = dotClock; + m.hSyncStart= hSyncStart; + m.hSyncEnd = hSyncEnd; + m.hTotal = hTotal; + m.hSkew = 0; + m.vSyncStart= vSyncStart; + m.vSyncEnd = vSyncEnd; + m.vTotal = vTotal; + QByteArray ba = name.toLocal8Bit(); + m.name = ba.data(); + + XRRCreateMode(const_cast<Display*>(X::Screen::inst()->display()), DefaultRootWindow(X::Screen::inst()->display()), &m); + //XRRAddOutputMode(); } //___________________________________________________________________________ @@ -299,7 +339,7 @@ namespace X qDebug() << "Output: " << _id << _name << _crtc - << _metricDimension << _clones << _modes; + << _metricDimension << _clones << _modes; } // //_________________________________________________________________________ |