[Mplayer-cvslog] CVS: main/libvo vo_sdl.c,1.32,1.33

Felix Buenemann atmosfear at users.sourceforge.net
Fri May 11 23:36:32 CEST 2001


Update of /cvsroot/mplayer/main/libvo
In directory usw-pr-cvs1:/tmp/cvs-serv18584

Modified Files:
	vo_sdl.c 
Log Message:
Added flipped video support and activate/deactivate screensaver under X.


Index: vo_sdl.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_sdl.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -r1.32 -r1.33
*** vo_sdl.c	2001/05/11 17:21:15	1.32
--- vo_sdl.c	2001/05/11 21:36:30	1.33
***************
*** 109,112 ****
--- 109,117 ----
  #include "sub.h"
  
+ #ifdef HAVE_X11
+ #include <X11/Xlib.h>
+ #include "x11_common.h"
+ #endif
+ 
  LIBVO_EXTERN(sdl)
  
***************
*** 172,175 ****
--- 177,184 ----
  	/* RGB ints */
  	int framePlaneRGB;
+ 	int stridePlaneRGB;
+ 
+ 	/* Flip image */
+ 	int flip;
  	
          int width,height;
***************
*** 350,354 ****
  	 * with keys need to be pressed twice, to be recognized.
  	 */
! #ifndef BUGGY_SDL	
  	SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
  	SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
--- 359,363 ----
  	 * with keys need to be pressed twice, to be recognized.
  	 */
! #ifndef BUGGY_SDL
  	SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
  	SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
***************
*** 358,362 ****
  	SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
  	SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
! #endif	
  	
  	/* Success! */
--- 367,371 ----
  	SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
  	SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
! #endif
  	
  	/* Success! */
***************
*** 454,462 ****
  
  static uint32_t
! init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format)
  //static int sdl_setup (int width, int height)
  {
  	struct sdl_priv_s *priv = &sdl_priv;
          unsigned int sdl_format;
  	
  	sdl_format = format;
--- 463,476 ----
  
  static uint32_t
! init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
  //static int sdl_setup (int width, int height)
  {
  	struct sdl_priv_s *priv = &sdl_priv;
          unsigned int sdl_format;
+ #ifdef HAVE_X11	
+ 	static Display *XDisplay;
+ #endif
+ 
+ 	//priv->flip = 1; // debugging only
  	
  	sdl_format = format;
***************
*** 515,518 ****
--- 529,540 ----
  
  	sdl_open (NULL, NULL);
+ #ifdef HAVE_X11
+ 	if(getenv("DISPLAY")) {
+ 		if(verbose) printf("SDL: deactivating XScreensaver/DPMS\n");
+ 		XDisplay = XOpenDisplay(getenv("DISPLAY"));
+ 		saver_off(XDisplay);
+ 		XCloseDisplay(XDisplay);
+ 	}
+ #endif
  
  	/* Set output window title */
***************
*** 533,542 ****
  	 * bit 1 (0x02) means mode switching (-vm)
  	 * bit 2 (0x04) enables software scaling (-zoom)
! 	 */  
! //      printf("SDL: fullscreenflag is set to: %i\n", fullscreen);
  //	printf("SDL: Width: %i Height: %i D_Width %i D_Height: %i\n", width, height, d_width, d_height);
! 	switch(fullscreen){
! 	  case 0x01:
! 	  case 0x05:
  	  	priv->width = width;
  		priv->height = height;
--- 555,571 ----
  	 * bit 1 (0x02) means mode switching (-vm)
  	 * bit 2 (0x04) enables software scaling (-zoom)
! 	 * bit 3 (0x08) enables flipping (-flip)
! 	 */
! 	#define FS 0x01
! 	#define VM 0x02
! 	#define ZOOM 0x04
! 	#define FLIP 0x08  
! //      printf("SDL: flags are set to: %i\n", flags);
  //	printf("SDL: Width: %i Height: %i D_Width %i D_Height: %i\n", width, height, d_width, d_height);
! 	if(flags&FLIP) { // flipping flag set, use it
! 		if(verbose) printf("SDL: using flipped video (only with RGB/BGR)\n");
! 		priv->flip = 1; 
! 	}
! 	if(flags&FS) {
  	  	priv->width = width;
  		priv->height = height;
***************
*** 545,567 ****
            	if((priv->surface = SDL_SetVideoMode (d_width, d_height, priv->bpp, priv->sdlfullflags)))
  			SDL_ShowCursor(0);
! 	  break;	
! 	  case 0x02:
  	 	if(verbose) printf("SDL: setting nonzoomed fullscreen with modeswitching\n");
  		printf("SDL: Info - please use -zoom switch to scale video\n");
            	if((priv->surface = SDL_SetVideoMode (d_width ? d_width : width, d_height ? d_height : height, priv->bpp, priv->sdlfullflags)))
  			SDL_ShowCursor(0);
! 	  break;
! 	  case 0x04:		
! 	  case 0x06:
  	 	if(verbose) printf("SDL: setting zoomed fullscreen with modeswitching\n");
  		printf("SDL: Info - please use -vm switch instead if you don't want scaled video\n");
            	priv->surface=NULL;
            	set_fullmode(priv->fullmode);
! 	  break;  
!           default:
! 	 	if(verbose) printf("SDL: setting windowed mode\n");
            	if((priv->surface = SDL_SetVideoMode (d_width, d_height, priv->bpp, priv->sdlflags))
  			&& (strcmp(priv->driver, "dga") == 0)) SDL_ShowCursor(0); //TODO: other sdl drivers that are fullscreen only?
!         }
          if(!priv->surface) { // cannot SetVideoMode
  		printf("SDL: failed to set video mode: %s\n", SDL_GetError());
--- 574,596 ----
            	if((priv->surface = SDL_SetVideoMode (d_width, d_height, priv->bpp, priv->sdlfullflags)))
  			SDL_ShowCursor(0);
! 	} else	
! 	if(flags&VM) {
  	 	if(verbose) printf("SDL: setting nonzoomed fullscreen with modeswitching\n");
  		printf("SDL: Info - please use -zoom switch to scale video\n");
            	if((priv->surface = SDL_SetVideoMode (d_width ? d_width : width, d_height ? d_height : height, priv->bpp, priv->sdlfullflags)))
  			SDL_ShowCursor(0);
! 	} else
! 	if(flags&ZOOM) {
  	 	if(verbose) printf("SDL: setting zoomed fullscreen with modeswitching\n");
  		printf("SDL: Info - please use -vm switch instead if you don't want scaled video\n");
            	priv->surface=NULL;
            	set_fullmode(priv->fullmode);
! 	} 
!         else {
! 		if(verbose) printf("SDL: setting windowed mode\n");
            	if((priv->surface = SDL_SetVideoMode (d_width, d_height, priv->bpp, priv->sdlflags))
  			&& (strcmp(priv->driver, "dga") == 0)) SDL_ShowCursor(0); //TODO: other sdl drivers that are fullscreen only?
! 	}
! 
          if(!priv->surface) { // cannot SetVideoMode
  		printf("SDL: failed to set video mode: %s\n", SDL_GetError());
***************
*** 640,643 ****
--- 669,673 ----
  	if(priv->mode) {
  		priv->framePlaneRGB = width * height * priv->rgbsurface->format->BytesPerPixel;
+ 		priv->stridePlaneRGB = width * priv->rgbsurface->format->BytesPerPixel;
  	}	
  	return 0;
***************
*** 657,660 ****
--- 687,692 ----
  	struct sdl_priv_s *priv = &sdl_priv;
  	uint8_t *dst;
+ 	int i;
+ 	uint8_t *mysrc = src[0];
  	
          switch(priv->format){
***************
*** 702,706 ****
  		}*/
  		dst = (uint8_t *) priv->rgbsurface->pixels;
! 		memcpy (dst, src[0], priv->framePlaneRGB);
  		/*if(SDL_MUSTLOCK(priv->rgbsurface)) 
  			SDL_UnlockSurface (priv->rgbsurface);*/
--- 734,746 ----
  		}*/
  		dst = (uint8_t *) priv->rgbsurface->pixels;
! 	    	if(priv->flip) {
! 	    		mysrc+=priv->framePlaneRGB;
! 			for(i = 0; i < priv->height; i++) {
! 				mysrc-=priv->stridePlaneRGB;
! 				memcpy (dst, mysrc, priv->stridePlaneRGB);
! 				dst+=priv->stridePlaneRGB;
! 			}
! 		}
! 		else memcpy (dst, src[0], priv->framePlaneRGB);
  		/*if(SDL_MUSTLOCK(priv->rgbsurface)) 
  			SDL_UnlockSurface (priv->rgbsurface);*/
***************
*** 997,1000 ****
--- 1037,1049 ----
  uninit(void)
  {
+ #ifdef HAVE_X11
+ 	static Display *XDisplay;
+ 	if(getenv("DISPLAY")) {
+ 		if(verbose) printf("SDL: activating XScreensaver/DPMS\n");
+ 		XDisplay = XOpenDisplay(getenv("DISPLAY"));
+ 		saver_on(XDisplay);
+ 		XCloseDisplay(XDisplay);
+ 	}
+ #endif
  sdl_close();
  }


_______________________________________________
Mplayer-cvslog mailing list
Mplayer-cvslog at lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/mplayer-cvslog



More information about the MPlayer-cvslog mailing list