[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-panel-devel
Subject: [Panel-devel] Xinerama problems on Intel cards
From: Jason Stubbs <jasonbstubbs () gmail ! com>
Date: 2007-11-24 18:55:14
Message-ID: 200711250355.14588.jasonbstubbs () gmail ! com
[Download RAW message or body]
There was a person (fm_) asking about the following bug on #kde4-krush.
https://bugzilla.novell.com/show_bug.cgi?id=335530
Apparently the issue has happened before with ksplashx and patched for.
https://bugzilla.novell.com/show_bug.cgi?id=290988
http://lists.opensuse.org/opensuse-commit/2007-07/msg00648.html
The attached patch does essentially the same in Corona::loadDefaultSetup().
This handles the desktop part, but kwin would also need to be updated to
handle maximizing correctly.
Personally, I wonder if the Intel driver isn't just buggy...
--
Jason Stubbs
["intel-fix.patch" (text/x-diff)]
Index: workspace/libs/plasma/corona.cpp
===================================================================
--- workspace/libs/plasma/corona.cpp (revision 740936)
+++ workspace/libs/plasma/corona.cpp (working copy)
@@ -234,10 +234,28 @@
int topLeftScreen = 0;
QPoint topLeftCorner = desktop->screenGeometry(0).topLeft();
+ // Merge screens that overlay each other to work around
+ // xinerama reporting inactive screens
+ QHash<int, QRect> screenGeometries;
+ QRect g = desktop->screenGeometry(0);
+ kDebug() << " screen 0 geometry is" << g;
+ for (int i = 1; i < numScreens; ++i) {
+ QRect g2 = desktop->screenGeometry(i);
+ kDebug() << " screen" << i << "geometry is" << g2;
+ if (g2.intersects(g)) {
+ g = g.united(g2);
+ } else {
+ screenGeometries.insert(i - 1, g);
+ g = g2;
+ }
+ }
+ screenGeometries.insert(numScreens - 1, g);
+
// create a containment for each screen
- for (int i = 0; i < numScreens; ++i) {
- QRect g = desktop->screenGeometry(i);
- kDebug() << " screen " << i << "geometry is" << g;
+ foreach (int i, screenGeometries.keys()) {
+ QRect g = screenGeometries[i];
+ kDebug() << " creating containment on screen" << i << "with geometry" << g;
+
Containment* c = addContainment("desktop");
c->setScreen(i);
c->setFormFactor(Plasma::Planar);
_______________________________________________
Panel-devel mailing list
Panel-devel@kde.org
https://mail.kde.org/mailman/listinfo/panel-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic