view gui/wm/ws.h @ 23572:a00685941686

demux_mkv very long seek fix The seek code searching for the closest position in the index used "int64_t min_diff=0xFFFFFFFL" as the initial "further from the goal than any real alternative" value. The unit is milliseconds so seeks more than about 75 hours past the end of the file would fail to recognize the last index position as the best match. This was triggered in practice by chapter seek code which apparently uses a seek of 1000000000 seconds forward to mean "seek to the end". The practical effect was that trying to seek to the next chapter in a file without chapters made MPlayer block until it finished reading the file from the current position to the end. Fixed by increasing the initial value from FFFFFFF to FFFFFFFFFFFFFFF.
author uau
date Wed, 20 Jun 2007 18:19:03 +0000
parents 17bf4f4b0715
children ce6ecb20fb44
line wrap: on
line source


// ----------------------------------------------------------------------------------------------
//  AutoSpace Window System for Linux/Win32 v0.61
//   Writed by pontscho / fresh!mindworkz
// ----------------------------------------------------------------------------------------------

#ifndef __MY_WS
#define __MY_WS

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <X11/extensions/XShm.h>
#ifdef HAVE_XDPMS
#include <X11/extensions/dpms.h>
#endif

#define  wsKeyReleased   0
#define  wsKeyPressed    1

#define  wsShift        (1L<<0)
#define  wsLock         (1L<<1)
#define  wsCtrl         (1L<<2)
#define  wsAlt          (1L<<3)

#define  wsPLMouseButton 1
#define  wsPMMouseButton 2
#define  wsPRMouseButton 3
#define  wsP4MouseButton 4
#define  wsP5MouseButton 5
#define  wsRLMouseButton (1 + 128)
#define  wsRMMouseButton (2 + 128)
#define  wsRRMouseButton (3 + 128)
#define  wsR4MouseButton (4 + 128)
#define  wsR5MouseButton (5 + 128)
#define  wsEnterWindow   253
#define  wsLeaveWindow   254
#define  wsMoveMouse     255

#define  wsShowMouseCursor   1
#define  wsMouse             1
#define  wsHideMouseCursor   0
#define  wsNoMouse           0
#define  wsHandleMouseButton 2
#define  wsHandleMouseMove   4

#define  wsHideFrame    0
#define  wsNoFrame      0
#define  wsShowFrame    1
#define  wsFrame        1
#define  wsMaxSize      2
#define  wsMinSize      4
#define  wsShowWindow   8
#define  wsHideWindow   16
#define  wsOverredirect 32

#define  wsNoBorder 0

#define  wsSysName "AutoSpace Window System LiTe"

#define wsRGB32 1
#define wsBGR32 2
#define wsRGB24 3
#define wsBGR24 4
#define wsRGB16 5
#define wsBGR16 6
#define wsRGB15 7
#define wsBGR15 8

#define wsWindowVisible          1
#define wsWindowPartialVisible   2
#define wsWindowNotVisible       4
#define wsWindowMapped           8
#define wsWindowUnmapped        16
#define wsWindowFocusIn         32
#define wsWindowFocusOut        64
#define wsWindowExpose         128
#define wsWindowRolled         256
#define wsWindowClosed         512

#define wsNone       0
#define wsMapped     1
#define wsFocused    2
#define wsVisible    3
#define wsNotVisible 4
#define wsPVisible   5
#define wsRolled     6

#define wsWMUnknown  0
#define wsWMNetWM    1
#define wsWMKDE      2
#define wsWMIceWM    3
#define wsWMWMaker   4

typedef   void (*wsTReDraw)( void );
typedef   void (*wsTReSize)( unsigned int X,unsigned int Y,unsigned int width,unsigned int height );
typedef   void (*wsTIdle)( void );
typedef   void (*wsTKeyHandler)( int KeyCode,int Type,int Key );
typedef   void (*wsTMouseHandler)( int Button,int X,int Y,int RX,int RY  );
typedef   void (*wsTDNDHandler)( int num,char ** str );

typedef struct
{
 Window               WindowID;
 Window               Parent;
 int                  X,Y,Width,Height;
 int                  OldX,OldY,OldWidth,OldHeight;
 int                  MaxX,MaxY;
 int                  isFullScreen;
 int                  BorderWidth;
 int                  Property;
 unsigned char *      bImage;
 XImage        *      xImage;
 Pixmap               Mask;
 int                  Decorations;

 int                  State;
 int                  Visible;
 int                  Mapped;
 int                  Focused;
 int                  Rolled;

 wsTReDraw            ReDraw;
 wsTReSize            ReSize;
 wsTIdle              Idle;
 wsTKeyHandler        KeyHandler;
 wsTMouseHandler      MouseHandler;
 wsTDNDHandler        DandDHandler;

 int                  Alt;
 int                  Shift;
 int                  Control;
 int                  NumLock;
 int                  CapsLock;
// --- Misc -------------------------------------------------------------------------------------

 Atom                 AtomDeleteWindow;
 Atom                 AtomTakeFocus;
 Atom                 AtomRolle;
 Atom                 AtomProtocols;
 Atom                 AtomsProtocols[3];
 Atom                 AtomLeaderClient;
 Atom                 AtomRemote;
 Atom		      AtomWMSizeHint;
 Atom		      AtomWMNormalHint;

 XShmSegmentInfo      Shminfo;
 unsigned char      * ImageData;
 unsigned short int * ImageDataw;
 unsigned int       * ImageDatadw;
 GC                   wGC;
 XGCValues            wGCV;
 unsigned long        WindowMask;
 XVisualInfo          VisualInfo;
 XSetWindowAttributes WindowAttrib;
 XSizeHints           SizeHint;
 XWMHints             WMHints;

 XFontStruct        * Font;
 int                  FontHeight;

 Cursor               wsCursor;
 char                 wsCursorData[1];
 Pixmap               wsCursorPixmap;
 int                  wsMouseEventType;
 XColor               wsColor;
} wsTWindow;

extern int                  wsMaxX;
extern int                  wsMaxY;
extern int                  wsOrgX;
extern int                  wsOrgY;

extern Display            * wsDisplay;
extern int                  wsScreen;
extern Window               wsRootWin;
extern int		    wsLayer;

extern unsigned char      * wsImageData;

extern XEvent               wsEvent;

extern int                  wsDepthOnScreen;
extern int                  wsRedMask;
extern int                  wsGreenMask;
extern int                  wsBlueMask;

extern int                  wsUseXShm;
extern int                  wsUseDGA;

// ----------------------------------------------------------------------------------------------
//  wsKeyTable
// ----------------------------------------------------------------------------------------------
extern unsigned long        wsKeyTable[512];

extern void wsXDone( void );
extern void wsXInit( void* disp );

extern int wsGetDepthOnScreen( void );

extern void wsDoExit( void );
extern void wsMainLoop( void );
extern Bool wsEvents( Display * display,XEvent * Event,XPointer arg );
extern void wsHandleEvents( void );

// ----------------------------------------------------------------------------------------------
//  wsCrateWindow: create a new window on the screen.
//   X,Y   : window position
//   wX,hY : window size
//   bW    : window frame size
//   cV    : mouse cursor visible
//   D     : "decoration", visible titlebar, etc ...
// ----------------------------------------------------------------------------------------------
extern void wsCreateWindow( wsTWindow * win,int X,int Y,int wX,int hY,int bW,int cV,unsigned char D,char * label );
extern void wsDestroyWindow( wsTWindow * win );
extern void wsMoveWindow( wsTWindow * win,int b,int x, int y );
extern void wsResizeWindow( wsTWindow * win,int sx, int sy );
extern void wsIconify( wsTWindow win );
extern void wsMoveTopWindow( Display * wsDisplay,Window win );
extern void wsSetBackground( wsTWindow * win,int color );
extern void wsSetForegroundRGB( wsTWindow * win,int r,int g,int b );
extern void wsSetBackgroundRGB( wsTWindow * win,int r,int g,int b );
#define wsClearWindow( win ) XClearWindow( wsDisplay,win.WindowID )
extern void wsSetTitle( wsTWindow * win,char * name );
extern void wsVisibleWindow( wsTWindow * win,int show );
extern void wsWindowDecoration( wsTWindow * win,long d );
extern void wsSetLayer( Display * wsDisplay,Window win, int layer );
extern void wsFullScreen( wsTWindow * win );
extern void wsPostRedisplay( wsTWindow * win );
extern void wsSetShape( wsTWindow * win,char * data );
extern void wsSetIcon( Display * dsp,Window win,Pixmap icon,Pixmap mask );

// ----------------------------------------------------------------------------------------------
//    Draw string at x,y with fc ( foreground color ) and bc ( background color ).
// ----------------------------------------------------------------------------------------------
extern void wsDrawString( wsTWindow win,int x,int y,char * str,int fc,int bc );
extern int  wsTextWidth( wsTWindow win,char * str );

// ----------------------------------------------------------------------------------------------
//    Show / hide mouse cursor.
// ----------------------------------------------------------------------------------------------
extern void wsVisibleMouse( wsTWindow * win,int m );
extern void wsSetMousePosition( wsTWindow * win,int x, int y );

// ----------------------------------------------------------------------------------------------
// Image handling
// ----------------------------------------------------------------------------------------------
extern void wsCreateImage( wsTWindow * win,int Width,int Height );
extern void wsConvert( wsTWindow * win,unsigned char * Image,unsigned int Size );
extern void wsPutImage( wsTWindow * win );
extern void wsResizeImage( wsTWindow * win,int Width,int Height );
extern void wsDestroyImage( wsTWindow * win );
extern int  wsGetOutMask( void );

extern void wsScreenSaverOn( Display *mDisplay );
extern void wsScreenSaverOff( Display * mDisplay );

#define wgIsRect( X,Y,tX,tY,bX,bY ) ( ( (X) > (tX) )&&( (Y) > (tY) )&&( (X) < (bX) )&&( (Y) < (bY) ) )

#endif