GSoC Idea: better multi-head support

Aike J Sommer dev at aikesommer.name
Sat Mar 22 21:01:08 CET 2008


Am Samstag 22 März 2008 18:25:58 schrieb Aaron J. Seigo:
> On Saturday 22 March 2008, Aike J Sommer wrote:
> > It was actually kinda easy to make it "seem" like the 2 monitors have
> > indpendent virtual desktops... It basically works by having n*m virtual
> > desktops and remapping the windows depending on the monitor they r
> > currently on and the selected desktop!
> > The plus is: it can be done by a simple app listening to
> > windowing-events, having a pager that "understands" this would be a plus
> > of course!! ;-) The downside: its a hack ;-) and there is slight flicker
> > when the window is remapped!
>
> personally i don't really see the point of this other than "cool hack". it
> sounds like a more complex set of concepts with more code paths to deal
> with for a win of ..? (and this code would belong in kwin, of course)

I guess thats mostly what it is... Even though i could imagine a few 
situations where i would like to work that way...
But anyways, doesnt really belong here! :-)


> >   - it would stay at 1400x1050 but move to the smaller external screen,
> > resulting in a 376 pixel wide strip of the wallpaper on the left of the
> > internal screen
> >   - it would resize to 1024x768 and move to the external screen, this
> > would then leave a 376 pixel wide strip of grey and white squares on the
> > internal screen
>
> did you ./apply_patches in qt-copy? because without patch 0172, there is no
> hope of this working with xrandr 1.2. if your qt does have patch 0172
> applied then this is problematic and would need to be debugged.

Yes... I did ./apply_patches!

>
> the code path is something like:
>
> Corona gets the screen resized(int) signal from QApplication::desktop(). it

This doesnt seem to happen all the time... Especially on reducing the 
resolution that signal seems to be missing... And even when its emitted it 
will *always* report screen 0 no matter which one actually was 
resized/enabled/disabled!

> finds the current Containment associated the screen and notifies it of
> this; that should result in the resizing of the Containment (and, if
> necessary, the repositioning of it on the canvas), which then emits its
> geometryChanged() signal, cahsing the View to adjust what it is looking at
> on the Corona.

Even with cycling through all screens (since resized only reports 0) it doesnt 
work. It will find a desktop-containment for screen 1 (even if screen 1 didnt 
exist before) and will call setScreen on that, but the screen will just stay 
grey!

>
> some of this code is pretty new and it hasn't been thoroughly tested yet.

I'd be willing to do that!! ;-) I'll keep trying to find my way through the 
relevant parts of the source, too... Do u have any hints what to look at??

>
> (btw: good news, 0172 has been applied upstream)

Thats good to hear... 
:-)





More information about the Panel-devel mailing list