Bug 48370 - xorg-server-1.11.4 -retro cursor display problem (experimental patch supplied)
Summary: xorg-server-1.11.4 -retro cursor display problem (experimental patch supplied)
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/Input/Core (show other bugs)
Version: 7.6 (2010.12)
Hardware: x86 (IA32) All
: medium normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2012-04-06 00:27 UTC by John Wehle
Modified: 2012-06-14 22:44 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
experimental patch (3.03 KB, patch)
2012-04-06 00:27 UTC, John Wehle
no flags Details | Splinter Review

Description John Wehle 2012-04-06 00:27:32 UTC
Created attachment 59575 [details] [review]
experimental patch

My .xserverrc contains:

  exec X :0 -retro

and my .xinitrc contains:

  xautolock -locker "xlock -mode flame -nice 19" &
  xload -geometry 120x137-0+95 -hl red &
  xman -geometry 114x71-0+0 &
  xterm -geometry -0-0 \#-40-20 -iconic -xrm "xterm*font: 7x13" -C &
  twm

Using startx with xorg-server 1.10.4 shows the standard gray background
with the X cursor in the center.  Using startx with xorg-server 1.11.4
shows the standard gray background, however it doesn't show the X cursor
until I press a key on the mouse.

Tracing through the code shows:

  XFixesCursorInit party_like_its_1989 1 CursorVisible 1 EnableCursor 1
  EnableDevice dev 0x2acb4000  IsMaster(dev) 1
  InitializeSprite pDev 0x2acb4000  pScreen 0x2882b380
  UpdateSpriteForScreen pDev 0x2acb4000  pScreen 0x2882b380
  AnimCurDisplayCursor
  CursorDisplayCursor CursorVisible 1 EnableCursor 1  cs->pCursorHideCounts 0
  miPointerDisplayCursor
  miPointerUpdateSprite
    switched screens pPointer->pSpriteScreen 0
  miSpriteSetCursor pDev 0x2acb4000  IsFloating(pDev) 1  pCursor 0x2ab160a0
    pPointer->isUp 0  pPointer->pCursor 0x2ab160a0
  ...
  I press the mouse key
  ...
  miSpriteSetCursor pDev 0x2acb4000  IsFloating(pDev) 0  pCursor 0x2ab3a310
    pPointer->isUp 1  pPointer->pCursor 0x2ab3a310

Note that initially IsFloating(pDev) returns 1.

Based on a visual comparison of the 1.10.4 code base I developed the
enclosed patch for 1.11.4.  With the patch applied using -retro with
1.11.4 results in the expected behavior (namely a gray background with
the X cursor in the center).

I have no knowledge regarding any of the issues involved ... hopefully
someone familar with the code can comment on the correct solution.

-- John
Comment 1 Peter Hutterer 2012-06-14 22:40:47 UTC
This was fixed with the commit below. Same thing, just general across the server. Thanks.

commit d75da4eccbabc3f83937cbd4eb2d6be2fd27a4b9
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Feb 20 12:09:33 2012 +1000

    dix: IsFloating() on master devices is always false
Comment 2 Peter Hutterer 2012-06-14 22:44:20 UTC
I should also note that this was fixed on the master branch, it's not in 1.11 but that one is EOL. Please contact your distributor if you need this in 1.11


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.