diff options
Diffstat (limited to 'libvo')
-rw-r--r-- | libvo/mga_common.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/libvo/mga_common.c b/libvo/mga_common.c index cb376587ce..e86c94834d 100644 --- a/libvo/mga_common.c +++ b/libvo/mga_common.c @@ -8,6 +8,9 @@ static void set_window( void ); /* forward declaration to kill warnings */ #ifdef VO_XMGA static void mDrawColorKey( void ); /* forward declaration to kill warnings */ +#ifdef HAVE_XINERAMA +extern int xinerama_screen; +#endif #endif static int mga_next_frame=0; @@ -472,13 +475,28 @@ static void set_window( void ){ /* find the screen we are on */ i = 0; - while(!(screens[i].x_org <= drwcX && screens[i].y_org <= drwcY && - screens[i].x_org + screens[i].width >= drwcX && - screens[i].y_org + screens[i].height >= drwcY )) + while(i<num_screens && + ((screens[i].x_org < drwcX) || + (screens[i].y_org < drwcY) || + (screens[i].x_org + screens[i].width >= drwcX) || + (screens[i].y_org + screens[i].height >= drwcY))) { i++; } + if(i<num_screens) + { + /* save the screen we are on */ + xinerama_screen = i; + } else { + /* oops.. couldnt find the screen we are on + * because the upper left corner left the + * visual range. assume we are still on the + * same screen + */ + i = xinerama_screen; + } + /* set drwcX and drwcY to the right values */ drwcX = drwcX - screens[i].x_org; drwcY = drwcY - screens[i].y_org; |