[PATCH] Multiscreen fix!

Guillaume Pothier gpothier at gmail.com
Sun Feb 1 14:57:44 CET 2009


Hi Alessandro, sorry I didn't reply earlier, I was offline this week.
I think your fix is not in the ideal place. I think that what happens
is that you are using a driver that is not xrandr1.2-aware (please
tell me if I'm wrong), and therefore Kephal falls back to
QDesktopWidget for screen management; unfortunately QDesktopWidget has
this problem that it still reports the old screen information while
the notifications are processed. But the fix for this should be in
Kephal, not in plasma (otherwise the problem would reappear in other
components such as kwin).
I actually had a patch to fix this but I was waiting for somebody to
test it before committing. Can you check this bug:
http://bugs.kde.org/show_bug.cgi?id=181325 and test the patch,
reverting your own patch, and see if it works for you?
Cheers,
g

2009/1/30 Alessandro Diaferia <alediaferia at gmail.com>:
> As you can see from the sources Plasma::View uses QTimer::singleShot(0,
> this, SLOT(privateInit())) in the ctor but DesktopView calls adjustSize() in
> the ctor with no delay..
>
> This causes the fact that adjustSize() uses invalid information about the
> current screen to setup its size and makes my second screen disappear (or
> actually, with a wrong size/position).
> I managed to fix this giving a delay also to adjustSize() so that when it is
> called the correct information are already set (and screen() returns the
> correct number in this case).
>
> Hope this is ok to commit, since i'd like to have my screen back officially
> :P
>
> Since i'm having troubles with the reviewboard here comes the patch:
>
> Index: shells/desktop/desktopview.cpp
> ===================================================================
>
> --- shells/desktop/desktopview.cpp	(revision 918687)
> +++ shells/desktop/desktopview.cpp	(working copy)
> @@ -104,7 +104,7 @@ DesktopView::DesktopView(Plasma::Contain
>      QBrush b(tile);
>      setBackgroundBrush(tile);
>
>
> -    adjustSize();
> +    QTimer::singleShot(0, this, SLOT(adjustSize()));
>
>      Kephal::Screens *screens = Kephal::Screens::self();
>      connect(screens, SIGNAL(screenResized(Kephal::Screen *, QSize, QSize)),
>
>
> Hugs!!
>
> --
> Alessandro Diaferia
>
> _______________________________________________
> Plasma-devel mailing list
> Plasma-devel at kde.org
> https://mail.kde.org/mailman/listinfo/plasma-devel
>
>


More information about the Plasma-devel mailing list