diff options
author | Dave Airlie <[email protected]> | 2012-06-08 18:10:18 +0200 |
---|---|---|
committer | Michel Dänzer <[email protected]> | 2012-06-12 18:48:28 +0200 |
commit | 6d289390ec4d643e7451f9dcb35439876f361c44 (patch) | |
tree | 69ffd91c4845ffe01029b659bf101d1f702ae30d /src/gallium/state_trackers/xorg | |
parent | 90c6eacdb4927e6395743d69e5efa0a3a0aec7cc (diff) |
st/xorg: Fix crash on startup.
Signed-off-by: Dave Airlie <[email protected]>
Tested-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/xorg')
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_driver.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 4b128221b75..1b0b4c6b7a0 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -71,6 +71,7 @@ static Bool drv_screen_init(SCREEN_INIT_ARGS_DECL); static Bool drv_switch_mode(SWITCH_MODE_ARGS_DECL); static void drv_adjust_frame(ADJUST_FRAME_ARGS_DECL); static Bool drv_enter_vt(VT_FUNC_ARGS_DECL); +static Bool drv_enter_vt_flags(ScrnInfoPtr pScrn, int flags); static void drv_leave_vt(VT_FUNC_ARGS_DECL); static void drv_free_screen(FREE_SCREEN_ARGS_DECL); static ModeStatus drv_valid_mode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, @@ -887,7 +888,7 @@ drv_screen_init(SCREEN_INIT_ARGS_DECL) if (serverGeneration == 1) xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options); - return drv_enter_vt(VT_FUNC_ARGS); + return drv_enter_vt_flags(pScrn, 1); } static void @@ -959,9 +960,8 @@ drv_leave_vt(VT_FUNC_ARGS_DECL) * This gets called when gaining control of the VT, and from ScreenInit(). */ static Bool -drv_enter_vt(VT_FUNC_ARGS_DECL) +drv_enter_vt_flags(ScrnInfoPtr pScrn, int flags) { - SCRN_INFO_PTR(arg); modesettingPtr ms = modesettingPTR(pScrn); CustomizerPtr cust = ms->cust; @@ -971,7 +971,7 @@ drv_enter_vt(VT_FUNC_ARGS_DECL) if (!ms->create_front_buffer(pScrn)) return FALSE; - if (!ms->bind_front_buffer(pScrn)) + if (!flags && !ms->bind_front_buffer(pScrn)) return FALSE; if (!xf86SetDesiredModes(pScrn)) @@ -984,6 +984,13 @@ drv_enter_vt(VT_FUNC_ARGS_DECL) } static Bool +drv_enter_vt(VT_FUNC_ARGS_DECL) +{ + SCRN_INFO_PTR(arg); + return drv_enter_vt_flags(pScrn, 0); +} + +static Bool drv_switch_mode(SWITCH_MODE_ARGS_DECL) { SCRN_INFO_PTR(arg); |