diff options
author | Keith Packard <keithp@keithp.com> | 2011-03-09 16:23:22 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-03-09 16:23:22 -0800 |
commit | 20d46de71f9cb7bc0d3675f467b992938e8f0367 (patch) | |
tree | 82be0be1aa29c2cedac48e08c84afe963a8490de | |
parent | 22f1400165d6602e21ffa939005a460e01adca9c (diff) |
dri2: Make DRI2FrameEvent public and use instead of void *
Instead of using void * for all of the flip_info and swap_info
pointers, just make the underlying structure a public data type and
use that.
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | src/intel.h | 25 | ||||
-rw-r--r-- | src/intel_display.c | 19 | ||||
-rw-r--r-- | src/intel_dri.c | 24 |
3 files changed, 35 insertions, 33 deletions
diff --git a/src/intel.h b/src/intel.h index 6984e2eb..41e7acaa 100644 --- a/src/intel.h +++ b/src/intel.h @@ -491,9 +491,28 @@ extern int intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crt extern int intel_crtc_id(xf86CrtcPtr crtc); extern int intel_output_dpms_status(xf86OutputPtr output); +enum DRI2FrameEventType { + DRI2_SWAP, + DRI2_FLIP, + DRI2_WAITMSC, +}; + +typedef struct _DRI2FrameEvent { + XID drawable_id; + ClientPtr client; + enum DRI2FrameEventType type; + int frame; + + /* for swaps & flips only */ + DRI2SwapEventPtr event_complete; + void *event_data; + DRI2BufferPtr front; + DRI2BufferPtr back; +} DRI2FrameEventRec, *DRI2FrameEventPtr; + extern Bool intel_do_pageflip(intel_screen_private *intel, dri_bo *new_front, - void *data, int ref_crtc_hw_id); + DRI2FrameEventPtr flip_info, int ref_crtc_hw_id); static inline intel_screen_private * intel_get_screen_private(ScrnInfoPtr scrn) @@ -527,9 +546,9 @@ extern xf86CrtcPtr intel_covering_crtc(ScrnInfoPtr scrn, BoxPtr box, Bool I830DRI2ScreenInit(ScreenPtr pScreen); void I830DRI2CloseScreen(ScreenPtr pScreen); void I830DRI2FrameEventHandler(unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *user_data); + unsigned int tv_usec, DRI2FrameEventPtr flip_info); void I830DRI2FlipEventHandler(unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *user_data); + unsigned int tv_usec, DRI2FrameEventPtr flip_info); extern Bool intel_crtc_on(xf86CrtcPtr crtc); int intel_crtc_to_pipe(xf86CrtcPtr crtc); diff --git a/src/intel_display.c b/src/intel_display.c index 7b4a40c6..4427162a 100644 --- a/src/intel_display.c +++ b/src/intel_display.c @@ -50,7 +50,7 @@ struct intel_mode { int cpp; drmEventContext event_context; - void *event_data; + DRI2FrameEventPtr flip_info; int old_fb_id; int flip_count; unsigned int fe_frame; @@ -567,7 +567,10 @@ intel_crtc_apply(xf86CrtcPtr crtc) y = crtc->y; #ifdef RANDR_14_INTERFACE fb_id = intel_crtc_add_scanout(crtc); - if (!fb_id) + if (fb_id) { + x = crtc->pixmap_x; + y = crtc->pixmap_y; + } else #endif { fb_id = mode->fb_id; @@ -1629,7 +1632,7 @@ fail: Bool intel_do_pageflip(intel_screen_private *intel, dri_bo *new_front, - void *data, int ref_crtc_hw_id) + DRI2FrameEventPtr flip_info, int ref_crtc_hw_id) { ScrnInfoPtr scrn = intel->scrn; xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); @@ -1665,7 +1668,7 @@ intel_do_pageflip(intel_screen_private *intel, if (!config->crtc[i]->enabled) continue; - mode->event_data = data; + mode->flip_info = flip_info; mode->flip_count++; crtc = config->crtc[i]->driver_private; @@ -1717,9 +1720,9 @@ static const xf86CrtcConfigFuncsRec intel_xf86crtc_config_funcs = { static void intel_vblank_handler(int fd, unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *event_data) + unsigned int tv_usec, DRI2FrameEventPtr event) { - I830DRI2FrameEventHandler(frame, tv_sec, tv_usec, event_data); + I830DRI2FrameEventHandler(frame, tv_sec, tv_usec, event); } static void @@ -1746,12 +1749,12 @@ intel_page_flip_handler(int fd, unsigned int frame, unsigned int tv_sec, /* Release framebuffer */ drmModeRmFB(mode->fd, mode->old_fb_id); - if (mode->event_data == NULL) + if (mode->flip_info == NULL) return; /* Deliver cached msc, ust from reference crtc to flip event handler */ I830DRI2FlipEventHandler(mode->fe_frame, mode->fe_tv_sec, - mode->fe_tv_usec, mode->event_data); + mode->fe_tv_usec, mode->flip_info); } static void diff --git a/src/intel_dri.c b/src/intel_dri.c index 7b60e140..640be72d 100644 --- a/src/intel_dri.c +++ b/src/intel_dri.c @@ -553,24 +553,6 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion, #if DRI2INFOREC_VERSION >= 4 -enum DRI2FrameEventType { - DRI2_SWAP, - DRI2_FLIP, - DRI2_WAITMSC, -}; - -typedef struct _DRI2FrameEvent { - XID drawable_id; - ClientPtr client; - enum DRI2FrameEventType type; - int frame; - - /* for swaps & flips only */ - DRI2SwapEventPtr event_complete; - void *event_data; - DRI2BufferPtr front; - DRI2BufferPtr back; -} DRI2FrameEventRec, *DRI2FrameEventPtr; static int I830DRI2DrawablePipe(DrawablePtr pDraw) @@ -694,9 +676,8 @@ can_exchange(DRI2BufferPtr front, DRI2BufferPtr back) } void I830DRI2FrameEventHandler(unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *event_data) + unsigned int tv_usec, DRI2FrameEventPtr event) { - DRI2FrameEventPtr event = event_data; DrawablePtr drawable; ScreenPtr screen; ScrnInfoPtr scrn; @@ -775,9 +756,8 @@ void I830DRI2FrameEventHandler(unsigned int frame, unsigned int tv_sec, } void I830DRI2FlipEventHandler(unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *event_data) + unsigned int tv_usec, DRI2FrameEventPtr flip) { - DRI2FrameEventPtr flip = event_data; DrawablePtr drawable; ScreenPtr screen; ScrnInfoPtr scrn; |