← Back to team overview

compiz team mailing list archive

[Bug 729903] [NEW] Xrandr, Handle RRScreenChangeNotify in src/screen.cpp


Public bug reported:

Binary package hint: compiz

Release: Ubuntu "Natty Narwhal", current as of today (2011/03/05)
Package Version: 1:0.9.4-0ubuntu3

Summary: When using the 'gnome-display-properties' tool or the 'xrandr'
command line tool to change the display configuration from single to
dual monitor and etc., compiz did not properly handle that event. The
attached quilt patch fixes this deficiency.

I have a laptop with a 1400x1050 display, and an LCD monitor with a
1680x1050 display. When I start with only the laptop screen enabled, and
use the 'gnome-display-properties' to turn on the external display, it
defaults to placing the external display to the right of the laptop
panel. When I turn it on with that configuration, and then move the
external monitor over to the left of the laptop panel, which is where it
really is, physically, and then click apply, compiz did not update it's
idea of the output dimensions. The external display will be on the left,
but only 1400x1050 of it is used, and windows on the laptop panel will
maximize to 1680x1050, overlapping the real screen onto the external

After applying this patch, it works as expected.

Also, I noticed that nowhere in core or any plugins was compiz actually
asking the X Server to provide it with RRScreenChangeNotify events,
despite the fact that the event handler in plugins/composite/screen.cpp
has a switch case looking for them. It could not ever have updated the
display refresh rates without having selected those events. This patch
does that, and so I think that code can run now, when a new monitor or
projector gets plugged in.

What remains is to write a plugin that handles screen rotation on tablet
computers, syncing the rotation setting with the wacom / touchscreen
rotation and sizes. I might try and write that. Any ideas?

** Affects: compiz (Ubuntu)
     Importance: Undecided
         Status: New

You received this bug notification because you are a member of compiz
packagers, which is subscribed to compiz in ubuntu.

  Xrandr, Handle RRScreenChangeNotify in src/screen.cpp

Follow ups