Bug 24244

Summary: xf86Rotate.c has broken dynamic wrapping
Product: xorg Reporter: Dave Airlie <airlied>
Component: Server/GeneralAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 23613    

Description Dave Airlie 2009-09-30 18:24:00 UTC
The code to do dynamic wrap/unwrap makes some assumption about all the other wrappees that isn't true.

a) assumes on return from wrapped function they rewrite their stored version,
so that lower layers can remove themselves.

b) drivers don't need to wrap since they are the bottom of the food chain,

From what I can see (a) can be fixed with code audit of all server/drivers (technically an ABI breakage, since its an assumption on how it works)

(b) is lies since if I dnyamically wrap at runtime I'm after the driver, so it
better do things right.
Comment 1 Peter Hutterer 2009-09-30 22:34:53 UTC
*** Bug 24245 has been marked as a duplicate of this bug. ***
Comment 2 Peter Hutterer 2009-10-01 19:19:31 UTC
commit 3ebb82d61c2b56e8f7145443a552a4e913bbfc80
Author: Dave Airlie <airlied@redhat.com>
Date:   Thu Oct 1 15:25:55 2009 +1000

    rotate: drop unwrapping inside block handler.
    
    Keith has shown half the block handlers wrappers are wrong, also
    dynamic wrapping/unwrapping from what I can see will happen after
    the drivers, so its really accidental ABI, that we can't change
    now without modifing drivers. So be safe for 1.7.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Declared-as-sane-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

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.