incorrect right strut is evaluated in fglrx Multi-Display setup

Bug #1064264 reported by Lingxiao Fu on 2012-10-09
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Nux
New
Undecided
Unassigned
nux (Ubuntu)
Undecided
Unassigned

Bug Description

Hardware Configuration:
-------------------------------------
CPU: Intel Core i7-2600K
ASIC: AMD Radeon HD 6870
OS: Ubuntu 12.04_64bit
Nux version: nux-2.14.1
Graphics Driver: latest fglrx

Issue:
-------------------------------------
When 2 monitors are connected and set to Nx1 Landscape eyefinity mode provided by fglrx and open a whatever application, the application's title bar gets behind Unity's top panel due to inappropriate workarea is produced, which in turn is caused by an incorrect right strut specified by the launcher on the right monitor.

Unity config:
-------------------------------------
Launchers on all desktops

Steps to reproduce:
-------------------------------------
1.Plug in 2 monitors.
2.driver installed
3.aticonfig --initial -f
4. restart x
5. open AMDCCCLE, click Display Manager -->monitor 2 -->Multi-Display -->Multi-display desktop with display 1. And set the 2 monitors as 2x1 Landscape, then Apply.
6. open a terminal and enter "aticonfig --set-pcs-val=DDX,MaximizeWindowMode,1"
7. restart x.
8. open any application such as Firefox Web Browser or terminal, then maximize it.

Expect to happen:
-------------------------------------
The title bar of the newly opened app should be right below the top panel and right beside the launcher of the primary desk.

What happens actually:
-------------------------------------
The application's title bar gets behind Unity's top panel and becomes unreachable.

GDB inspection on Compiz
-------------------------------------
1. Launcher on the right-side monitor dictates a right strut so large that covers almost the entire screen;
2. PrivateScreen::computeWorkareaForBox has an empty region due to above fact and thus ignores all struts and returns the full screen's area as workarea.

Dubious code:
-------------------------------------
nux/NuxGraphics/XInputWindow.cpp, line 207

      {
        /* right */
        data[1] = (screenWidth - 1) - geometry_.y;
        data[6] = geometry_.y;
        data[7] = geometry_.y + geometry_.height - 1;
      }

Wouldn't data[1] should be evaluated by (screenWidth - 1) - geometry_.x instead of (screenWidth - 1) - geometry_.y ?

Additional notes:
-------------------------------------
After editing /usr/share/compiz/unityshell.xml to modify num_launcher to 1, the issue disappears.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers