comparison libvo/vo_xvidix.c @ 6382:86d5fc5b54e2

fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
author pontscho
date Mon, 10 Jun 2002 18:40:19 +0000
parents da2dda48b7ec
children 7bd342baa785
comparison
equal deleted inserted replaced
6381:e5e288512d8f 6382:86d5fc5b54e2
72 72
73 /* used by XGetGeometry & XTranslateCoordinates for moving/resizing window */ 73 /* used by XGetGeometry & XTranslateCoordinates for moving/resizing window */
74 static uint32_t drwX, drwY, drwWidth, drwHeight, drwBorderWidth, 74 static uint32_t drwX, drwY, drwWidth, drwHeight, drwBorderWidth,
75 drwDepth, drwcX, drwcY, dwidth, dheight; 75 drwDepth, drwcX, drwcY, dwidth, dheight;
76 76
77 static void set_window(int force_update,const vo_tune_info_t *info, int ps) 77 static void set_window(int force_update,const vo_tune_info_t *info)
78 { 78 {
79 Window mRoot; 79 Window mRoot;
80 if ( WinID ) 80 if ( WinID )
81 { 81 {
82 XGetGeometry(mDisplay, vo_window, &mRoot, &drwX, &drwY, &drwWidth, 82 XGetGeometry(mDisplay, vo_window, &mRoot, &drwX, &drwY, &drwWidth,
135 drwcY = drwcY - screens[i].y_org; 135 drwcY = drwcY - screens[i].y_org;
136 XFree(screens); 136 XFree(screens);
137 } 137 }
138 #endif 138 #endif
139 139
140 if ( ps ) 140 if ( vo_panscan > 0.0f && vo_fs )
141 { 141 {
142 drwcX-=vo_panscan_x >> 1; 142 drwcX-=vo_panscan_x >> 1;
143 drwcY-=vo_panscan_y >> 1; 143 drwcY-=vo_panscan_y >> 1;
144 drwX-=vo_panscan_x >> 1; 144 drwX-=vo_panscan_x >> 1;
145 drwY-=vo_panscan_y >> 1; 145 drwY-=vo_panscan_y >> 1;
361 gr_key.ckey.green = 0; 361 gr_key.ckey.green = 0;
362 gr_key.ckey.blue = 255; 362 gr_key.ckey.blue = 255;
363 vidix_grkey_set(&gr_key); 363 vidix_grkey_set(&gr_key);
364 } 364 }
365 365
366 set_window(1,info,0); 366 set_window(1,info);
367 if(info) memcpy(&vtune,info,sizeof(vo_tune_info_t)); 367 if(info) memcpy(&vtune,info,sizeof(vo_tune_info_t));
368 else memset(&vtune,0,sizeof(vo_tune_info_t)); 368 else memset(&vtune,0,sizeof(vo_tune_info_t));
369 XFlush(mDisplay); 369 XFlush(mDisplay);
370 XSync(mDisplay, False); 370 XSync(mDisplay, False);
371 371
372 panscan_calc();
373
372 saver_off(mDisplay); /* turning off screen saver */ 374 saver_off(mDisplay); /* turning off screen saver */
373 375
374 vo_config_count++; 376 vo_config_count++;
375 377
376 return(0); 378 return(0);
384 static void check_events(void) 386 static void check_events(void)
385 { 387 {
386 const int event = vo_x11_check_events(mDisplay); 388 const int event = vo_x11_check_events(mDisplay);
387 389
388 if ((event & VO_EVENT_RESIZE) || (event & VO_EVENT_EXPOSE)) 390 if ((event & VO_EVENT_RESIZE) || (event & VO_EVENT_EXPOSE))
389 set_window(0,&vtune,0); 391 set_window(0,&vtune);
390 392
391 return; 393 return;
392 } 394 }
393 395
394 /* draw_osd, flip_page, draw_slice, draw_frame should be 396 /* draw_osd, flip_page, draw_slice, draw_frame should be
461 switch (request) { 463 switch (request) {
462 case VOCTRL_QUERY_FORMAT: 464 case VOCTRL_QUERY_FORMAT:
463 return query_format(*((uint32_t*)data)); 465 return query_format(*((uint32_t*)data));
464 case VOCTRL_GUISUPPORT: 466 case VOCTRL_GUISUPPORT:
465 return VO_TRUE; 467 return VO_TRUE;
466 case VOCTRL_FULLSCREEN:
467 vo_x11_fullscreen();
468 return VO_TRUE;
469 case VOCTRL_GET_PANSCAN: 468 case VOCTRL_GET_PANSCAN:
470 if ( !vo_config_count || !vo_fs ) return VO_FALSE; 469 if ( !vo_config_count || !vo_fs ) return VO_FALSE;
471 return VO_TRUE; 470 return VO_TRUE;
471 case VOCTRL_FULLSCREEN:
472 vo_x11_fullscreen();
472 case VOCTRL_SET_PANSCAN: 473 case VOCTRL_SET_PANSCAN:
473 if ( vo_fs && ( vo_panscan != vo_panscan_amount ) ) 474 if ( vo_fs && ( vo_panscan != vo_panscan_amount ) )
474 { 475 {
475 panscan_calc(); 476 panscan_calc();
476 set_window( 0,&vtune,1 ); 477 set_window( 0,&vtune );
477 } 478 }
478 return VO_TRUE; 479 return VO_TRUE;
479 } 480 }
480 return VO_NOTIMPL; 481 return VO_NOTIMPL;
481 } 482 }