winex11.drv: Moved initialization of screen_width/height to xinerama_init to do it inside the x11 lock.

This commit is contained in:
Alexandre Julliard 2008-01-17 19:59:22 +01:00
parent c19af910eb
commit c5a95025cf
5 changed files with 6 additions and 13 deletions

View File

@ -110,9 +110,7 @@ void X11DRV_init_desktop( Window win, unsigned int width, unsigned int height )
root_window = win;
max_width = screen_width;
max_height = screen_height;
screen_width = width;
screen_height = height;
xinerama_init();
xinerama_init( width, height );
/* initialize the available resolutions */
dd_modes = X11DRV_Settings_SetHandlers("desktop",

View File

@ -884,9 +884,7 @@ void X11DRV_resize_desktop( unsigned int width, unsigned int height )
SetRect( &resize_data.old_screen_rect, 0, 0, screen_width, screen_height );
resize_data.old_virtual_rect = virtual_screen_rect;
screen_width = width;
screen_height = height;
xinerama_init();
xinerama_init( width, height );
ClipCursor(NULL);
if (!(data = X11DRV_get_win_data( hwnd )))

View File

@ -731,7 +731,7 @@ extern void X11DRV_sync_window_position( Display *display, struct x11drv_win_dat
extern BOOL X11DRV_SetWindowPos( HWND hwnd, HWND insert_after, const RECT *rectWindow,
const RECT *rectClient, UINT swp_flags, const RECT *validRects );
extern void X11DRV_set_wm_hints( Display *display, struct x11drv_win_data *data );
extern void xinerama_init(void);
extern void xinerama_init( unsigned int width, unsigned int height );
extern void X11DRV_init_desktop( Window win, unsigned int width, unsigned int height );
extern void X11DRV_resize_desktop(unsigned int width, unsigned int height);

View File

@ -528,10 +528,7 @@ static BOOL process_attach(void)
if (TRACE_ON(synchronous)) XSynchronize( display, True );
screen_width = WidthOfScreen( screen );
screen_height = HeightOfScreen( screen );
xinerama_init();
xinerama_init( WidthOfScreen(screen), HeightOfScreen(screen) );
X11DRV_Settings_Init();
#ifdef HAVE_LIBXXF86VM

View File

@ -134,14 +134,14 @@ static inline int query_screens(void)
#endif /* SONAME_LIBXINERAMA */
void xinerama_init(void)
void xinerama_init( unsigned int width, unsigned int height )
{
MONITORINFOEXW *primary;
int i;
wine_tsx11_lock();
SetRect( &virtual_screen_rect, 0, 0, screen_width, screen_height );
SetRect( &virtual_screen_rect, 0, 0, width, height );
if (root_window != DefaultRootWindow( gdi_display ) || !query_screens())
{