view Gui/mplayer/sw.c @ 18693:a4a6b2cf5022

Do not use border for bicubic filter helper texture, since it will cause ATI cards to switch to software mode and be unusable. Double texture size to avoid this causing artefacts. Note: yuv=6 will not be changed, so it will stay unusable with ATI cards unless ATI starts supporting this.
author reimar
date Tue, 13 Jun 2006 19:55:20 +0000
parents 0e1471d9da74
children
line wrap: on
line source


// sub window

#include <inttypes.h>

#include "../config.h"
#include "../libvo/x11_common.h"
#include "../libvo/fastmemcpy.h"

#include "app.h"
#include "interface.h"
#include "../help_mp.h"
#include "widgets.h"

int             mplSubRender = 0;
int             SubVisible = 0;

extern int             boxMoved;
extern int             sx,sy;
extern int             i,pot;

void mplSubDraw( void )
{
 if ( appMPlayer.subWindow.State == wsWindowClosed ) exit_player( MSGTR_Exit_quit );
 
 if ( appMPlayer.subWindow.State == wsWindowFocusIn ) SubVisible++;
 if ( appMPlayer.subWindow.State == wsWindowFocusOut && metacity_hack != 3 ) SubVisible--;

 if ( !appMPlayer.subWindow.Mapped ||
      appMPlayer.subWindow.Visible == wsWindowNotVisible ) return;

 if ( guiIntfStruct.Playing ) mplSubRender=0;

 if ( mplSubRender && appMPlayer.subWindow.State == wsWindowExpose )
  {
   if ( appMPlayer.sub.Bitmap.Image ) wsPutImage( &appMPlayer.subWindow );
  }
 appMPlayer.subWindow.State=0;
}

void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
{
 static int mplSubMoved = 0;
 static int msButton = 0;

 mplPBShow( X,Y );

 switch( Button )
  {
   case wsRRMouseButton:
          gtkShow( evShowPopUpMenu,NULL );
          break;
   case wsPMMouseButton:
          gtkShow( evHidePopUpMenu,NULL );
          mplShowMenu( RX,RY );
          msButton=wsPMMouseButton;
          break;
   case wsRMMouseButton:
          mplHideMenu( RX,RY,1 );
          msButton=0;
          break;
// ---
   case wsPLMouseButton:
          gtkShow( evHidePopUpMenu,NULL );
          sx=X; sy=Y;
          msButton=wsPLMouseButton;
          mplSubMoved=0;
          break;
   case wsMoveMouse:
          switch ( msButton )
           {
            case wsPLMouseButton:
                   mplSubMoved=1;
                   if ( !appMPlayer.subWindow.isFullScreen ) wsMoveWindow( &appMPlayer.subWindow,False,RX - sx,RY - sy );
                   break;
            case wsPMMouseButton:
                   mplMenuMouseHandle( X,Y,RX,RY );
                   break;
	    default: mplPBShow( X,Y ); break;
           }
          break;
   case wsRLMouseButton:
          if ( ( !mplSubMoved )&&( appMPlayer.subWindow.isFullScreen ) )
           {
            if( SubVisible++%2 ) wsMoveTopWindow( wsDisplay,appMPlayer.mainWindow.WindowID );
             else wsMoveTopWindow( wsDisplay,appMPlayer.subWindow.WindowID );
	   }
          msButton=0;
          mplSubMoved=0;
          break;
  }
}