diff options
author | Ville Syrjala <syrjala@sci.fi> | 2011-05-04 23:51:27 +0300 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2011-08-01 09:53:46 -0400 |
commit | d29bab632e9ecccba518d4107d52620bf75eb1cf (patch) | |
tree | f7511225f302dd59b79675888ced783fc2d5770b /src/drmmode_display.h | |
parent | 9493563c1ef4b51af0ee8a44cb4e7c5bb280347e (diff) |
kms: Move flip_count and co. to a per swap structure
If multiple drawables are doing page flipping, the global drmmode
structure can't be used to keep per swap information. For example
flip_count can increase prematurely due to another swap request,
and then the previous swap request never gets completed, leading to a
stuck client. Move the relevant pieces of data to a strucuture that
gets allocated once per swap request and shared by all involved CRTCs.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Diffstat (limited to 'src/drmmode_display.h')
-rw-r--r-- | src/drmmode_display.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/drmmode_display.h b/src/drmmode_display.h index 548907bb..eb271f5f 100644 --- a/src/drmmode_display.h +++ b/src/drmmode_display.h @@ -39,7 +39,6 @@ typedef struct { int fd; unsigned fb_id; - unsigned old_fb_id; drmModeResPtr mode_res; drmModeFBPtr mode_fb; int cpp; @@ -50,15 +49,20 @@ typedef struct { InputHandlerProc uevent_handler; #endif drmEventContext event_context; +} drmmode_rec, *drmmode_ptr; + +typedef struct { + drmmode_ptr drmmode; + unsigned old_fb_id; int flip_count; void *event_data; unsigned int fe_frame; unsigned int fe_tv_sec; unsigned int fe_tv_usec; -} drmmode_rec, *drmmode_ptr; +} drmmode_flipdata_rec, *drmmode_flipdata_ptr; typedef struct { - drmmode_ptr drmmode; + drmmode_flipdata_ptr flipdata; Bool dispatch_me; } drmmode_flipevtcarrier_rec, *drmmode_flipevtcarrier_ptr; |