You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
3.7 KiB
132 lines
3.7 KiB
diff -p -up krandr-0.5.2.1/randr/randrcrtc.cpp.orig krandr-0.5.2.1/randr/randrcrtc.cpp
|
|
--- krandr-0.5.2.1/randr/randrcrtc.cpp.orig 2008-03-28 13:56:38.000000000 -0300
|
|
+++ krandr-0.5.2.1/randr/randrcrtc.cpp 2008-03-28 16:15:57.000000000 -0300
|
|
@@ -30,6 +30,13 @@ RandRCrtc::RandRCrtc(RandRScreen *parent
|
|
Q_ASSERT(m_screen);
|
|
|
|
m_id = id;
|
|
+
|
|
+ // just to make sure it gets initialized
|
|
+ m_proposedRect = m_currentRect;
|
|
+ m_proposedRotation = m_currentRotation;
|
|
+ m_proposedRate = m_currentRate;
|
|
+
|
|
+
|
|
loadSettings();
|
|
}
|
|
|
|
@@ -116,11 +123,6 @@ void RandRCrtc::loadSettings(bool notify
|
|
changes |= RandR::ChangeRate;
|
|
}
|
|
|
|
- // just to make sure it gets initialized
|
|
- m_proposedRect = m_currentRect;
|
|
- m_proposedRotation = m_currentRotation;
|
|
- m_proposedRate = m_currentRate;
|
|
-
|
|
// free the info
|
|
XRRFreeCrtcInfo(info);
|
|
|
|
@@ -130,6 +132,7 @@ void RandRCrtc::loadSettings(bool notify
|
|
|
|
void RandRCrtc::handleEvent(XRRCrtcChangeNotifyEvent *event)
|
|
{
|
|
+#if 0
|
|
kdDebug() << "[CRTC] Event..." << endl;
|
|
int changed = 0;
|
|
|
|
@@ -164,6 +167,7 @@ void RandRCrtc::handleEvent(XRRCrtcChang
|
|
|
|
if (changed)
|
|
emit crtcChanged(m_id, changed);
|
|
+#endif
|
|
}
|
|
|
|
RRMode RandRCrtc::mode() const
|
|
@@ -241,6 +245,7 @@ bool RandRCrtc::applyProposed()
|
|
return false;
|
|
|
|
RROutput *outputs = new RROutput[m_connectedOutputs.count()];
|
|
+ int connectedCount = m_connectedOutputs.count();
|
|
for (int i = 0; i < m_connectedOutputs.count(); ++i)
|
|
outputs[i] = m_connectedOutputs[i];
|
|
|
|
@@ -261,7 +266,7 @@ bool RandRCrtc::applyProposed()
|
|
if (!m_screen->rect().contains(r))
|
|
{
|
|
// try to adjust the screen size
|
|
- if (!m_screen->adjustSize(r))
|
|
+ if (!adjustScreenSize(r, true))
|
|
return false;
|
|
}
|
|
|
|
@@ -279,7 +284,7 @@ bool RandRCrtc::applyProposed()
|
|
|
|
// adjust the screen size
|
|
r = r.unite(m_currentRect);
|
|
- if (!m_screen->adjustSize(r))
|
|
+ if (!adjustScreenSize(r,true))
|
|
return false;
|
|
}
|
|
}
|
|
@@ -287,7 +292,7 @@ bool RandRCrtc::applyProposed()
|
|
|
|
Status s = XRRSetCrtcConfig(qt_xdisplay(), m_screen->resources(), m_id,
|
|
RandR::timestamp, m_proposedRect.x(), m_proposedRect.y(), mode.id(),
|
|
- m_proposedRotation, outputs, m_connectedOutputs.count());
|
|
+ m_proposedRotation, outputs, connectedCount);
|
|
|
|
bool ret;
|
|
if (s == RRSetConfigSuccess)
|
|
@@ -424,6 +429,19 @@ ModeList RandRCrtc::modes() const
|
|
return modeList;
|
|
}
|
|
|
|
+bool RandRCrtc::adjustScreenSize(const QRect &rect, bool disable)
|
|
+{
|
|
+ if (disable)
|
|
+ {
|
|
+ // disable the crtc before changing screen size
|
|
+ Status s = XRRSetCrtcConfig(qt_xdisplay(), m_screen->resources(), m_id,
|
|
+ RandR::timestamp, 0, 0, None,
|
|
+ RandR::Rotate0, NULL, 0);
|
|
+ }
|
|
+
|
|
+ return m_screen->adjustSize(rect);
|
|
+}
|
|
+
|
|
#include "randrcrtc.moc"
|
|
|
|
#endif
|
|
diff -p -up krandr-0.5.2.1/randr/randroutput.cpp.orig krandr-0.5.2.1/randr/randroutput.cpp
|
|
--- krandr-0.5.2.1/randr/randroutput.cpp.orig 2008-03-28 16:14:56.000000000 -0300
|
|
+++ krandr-0.5.2.1/randr/randroutput.cpp 2008-03-28 16:15:18.000000000 -0300
|
|
@@ -107,6 +107,7 @@ void RandROutput::loadSettings(bool noti
|
|
|
|
void RandROutput::handleEvent(XRROutputChangeNotifyEvent *event)
|
|
{
|
|
+#if 0
|
|
int changed = 0;
|
|
|
|
if (event->crtc != m_currentCrtc)
|
|
@@ -141,6 +142,7 @@ void RandROutput::handleEvent(XRROutputC
|
|
|
|
if (changed)
|
|
emit outputChanged(m_id, changed);
|
|
+#endif
|
|
}
|
|
|
|
void RandROutput::handlePropertyEvent(XRROutputPropertyNotifyEvent *event)
|
|
diff -p -up krandr-0.5.2.1/randr/randrcrtc.h.orig krandr-0.5.2.1/randr/randrcrtc.h
|
|
--- krandr-0.5.2.1/randr/randrcrtc.h.orig 2008-03-28 14:24:07.000000000 -0300
|
|
+++ krandr-0.5.2.1/randr/randrcrtc.h 2008-03-28 14:27:15.000000000 -0300
|
|
@@ -62,6 +62,8 @@ public:
|
|
|
|
ModeList modes() const;
|
|
|
|
+ bool adjustScreenSize(const QRect &rect, bool disableCrtc = false);
|
|
+
|
|
signals:
|
|
void crtcChanged(RRCrtc c, int changes);
|
|
|