diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | doc/README.MINGWCROSS | 11 | ||||
-rw-r--r-- | doc/README.WIN32 | 1 | ||||
-rw-r--r-- | doc/hackersguide/output.sgml | 2 | ||||
-rw-r--r-- | src/post/deinterlace/xine_plugin.c | 3 | ||||
-rwxr-xr-x | src/video_out/video_out_directx.c | 144 | ||||
-rw-r--r-- | src/xine-engine/events.c | 6 | ||||
-rw-r--r-- | src/xine-engine/load_plugins.c | 6 | ||||
-rw-r--r-- | src/xine-engine/metronom.h | 3 | ||||
-rw-r--r-- | src/xine-engine/xine.c | 3 |
10 files changed, 99 insertions, 82 deletions
@@ -2,7 +2,7 @@ xine-lib (1.1.1) * Improve sound quality when using alsa 1.0.9 or above. When playing a 44.1khz stream on a 48khz only capable sound card. It bypasses alsa-lib resampler and uses xine's - * Windows ports fixes and improvements + * Windows ports bug fixes and improvements * Set up the framebuffer palette (fb video out). * build fixes and improvements, added --with-pthread-prefix and --with-zlib-prefix options diff --git a/doc/README.MINGWCROSS b/doc/README.MINGWCROSS index a840172a6..c867bf9ac 100644 --- a/doc/README.MINGWCROSS +++ b/doc/README.MINGWCROSS @@ -173,6 +173,9 @@ In following text are used symbols $PREFIX and $USER with this meaning: # mv pthread.def pthreadGC2.def wine LIB.EXE /machine:i386 /def:pthreadGC2.def + # + # installing + # su mkdir -p $PREFIX/pthreads-win32/bin mkdir -p $PREFIX/pthreads-win32/include @@ -193,12 +196,18 @@ In following text are used symbols $PREFIX and $USER with this meaning: # small workaround in Makefile: # sed -e 's/dllwrap /i386-mingw32-dllwrap /g' win32/Makefile.gcc > Makefile + # + # compiling + # make CC=i386-mingw32-gcc AR=i386-mingw32-ar RC=i386-mingw32-windres STATICLIB=libz-static.a IMPLIB=libz.a # # possibility to use zlib library in M$ Visual C (optional) # cp win32/zlib.def zlib1.def wine LIB.EXE /machine:i386 /def:zlib1.def + # + # installing + # su mkdir -p $PREFIX/zlib/{include,lib,bin} cp zconf.h zlib.h $PREFIX/zlib/include/ @@ -247,7 +256,7 @@ Now we can build xine library for Windows by this way: # if we want to use xine library in M$ compilers, we will need wine and some # tools from M$ Visual C: LIB.EXE, LINK.EXE, MSPDB60.DLL # - # create libxine-1.lib file + # create libxine-1.lib file (optional) # cd <path_where_libxine_is_installed_>/lib cp ../bin/libxine-1.dll . diff --git a/doc/README.WIN32 b/doc/README.WIN32 index bff456ce7..6c19553d8 100644 --- a/doc/README.WIN32 +++ b/doc/README.WIN32 @@ -170,4 +170,3 @@ Bugs: - random crashes and random locks in stress tests - non-seekable input plugins crash - ffmpeg bug visible for some video sizes - - pause doesn't work (asserts) diff --git a/doc/hackersguide/output.sgml b/doc/hackersguide/output.sgml index d24e8f903..806e89d0a 100644 --- a/doc/hackersguide/output.sgml +++ b/doc/hackersguide/output.sgml @@ -357,7 +357,7 @@ Rewiring is the reconnection of one post plugin's outputs and another post plugin's inputs. This can happen on the fly during playback, which makes this a very delicate process. In one such input to output connection, only the output is active by either - writing data directly to the connected intput or by calling functions there. Therefore + writing data directly to the connected input or by calling functions there. Therefore we have to notify only the output, when it is rewired. This is done by calling the <function>rewire()</function> member function of the corresponding <type>xine_post_out_t</type> when the frontend issues a rewiring on this output. diff --git a/src/post/deinterlace/xine_plugin.c b/src/post/deinterlace/xine_plugin.c index aa43c5dee..c3ecbd2e3 100644 --- a/src/post/deinterlace/xine_plugin.c +++ b/src/post/deinterlace/xine_plugin.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_plugin.c,v 1.45 2005/06/17 22:36:43 dsalt Exp $ + * $Id: xine_plugin.c,v 1.46 2005/09/19 16:14:02 valtri Exp $ * * advanced video deinterlacer plugin * Jun/2003 by Miguel Freitas @@ -445,6 +445,7 @@ static void deinterlace_dispose(post_plugin_t *this_gen) if (_x_post_dispose(this_gen)) { _flush_frames(this); + pthread_mutex_destroy(&this->lock); free(this); } } diff --git a/src/video_out/video_out_directx.c b/src/video_out/video_out_directx.c index 946e3f3e4..349fff0f7 100755 --- a/src/video_out/video_out_directx.c +++ b/src/video_out/video_out_directx.c @@ -20,7 +20,7 @@ * video_out_directx.c, direct draw video output plugin for xine * by Matthew Grooms <elon@altavista.com> * - * $Id: video_out_directx.c,v 1.23 2005/08/29 15:28:16 valtri Exp $ + * $Id: video_out_directx.c,v 1.24 2005/09/19 16:14:02 valtri Exp $ */ typedef unsigned char boolean; @@ -56,7 +56,7 @@ typedef unsigned char boolean; * Defining them here allows us to get rid of the dxguid library during * the linking stage. *****************************************************************************/ -#if 0 +#if 1 static const GUID IID_IDirectDraw = { 0x6C14DB80,0xA733,0x11CE,{0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60} }; @@ -68,7 +68,7 @@ static const GUID IID_IDirectDraw2 = { }; #endif -#if 1 +#if 0 static const GUID IID_IDirectDraw4 = { 0x9C59509A,0x39BD,0x11D1,{0x8C,0x4A,0x00,0xC0,0x4F,0xD9,0x30,0xC5} }; @@ -102,9 +102,9 @@ typedef struct { xine_t *xine; - LPDIRECTDRAW4 ddobj; /* direct draw object */ - LPDIRECTDRAWSURFACE4 primary; /* primary dd surface */ - LPDIRECTDRAWSURFACE4 secondary; /* secondary dd surface */ + LPDIRECTDRAW ddobj; /* direct draw object */ + LPDIRECTDRAWSURFACE primary; /* primary dd surface */ + LPDIRECTDRAWSURFACE secondary; /* secondary dd surface */ LPDIRECTDRAWCLIPPER ddclipper; /* dd clipper object */ uint8_t * contents; /* secondary contents */ win32_frame_t *current; /* current frame */ @@ -139,7 +139,7 @@ typedef struct { /* Display formatted error message in * popup message box.*/ -void Error( HWND hwnd, LPSTR szfmt, ... ) +static void Error( HWND hwnd, LPSTR szfmt, ... ) { char tempbuff[ 256 ]; *tempbuff = 0; @@ -150,7 +150,7 @@ void Error( HWND hwnd, LPSTR szfmt, ... ) /* Update our drivers current knowledge * of our windows video out posistion */ -void UpdateRect( win32_visual_t * win32_visual ) +static void UpdateRect( win32_visual_t * win32_visual ) { if( win32_visual->FullScreen ) { @@ -174,10 +174,10 @@ void UpdateRect( win32_visual_t * win32_visual ) * window and will always have a pixel format * identical to the current display mode. */ -boolean CreatePrimary( win32_driver_t * win32_driver ) +static boolean CreatePrimary( win32_driver_t * win32_driver ) { - LPDIRECTDRAW4 ddobj; - DDSURFACEDESC2 ddsd; + LPDIRECTDRAW ddobj; + DDSURFACEDESC ddsd; HRESULT result; /* create direct draw object */ @@ -201,10 +201,10 @@ boolean CreatePrimary( win32_driver_t * win32_driver ) /* try to get new interface */ - result = IDirectDraw_QueryInterface( ddobj, &IID_IDirectDraw4, (LPVOID *) &win32_driver->ddobj ); + result = IDirectDraw_QueryInterface( ddobj, &IID_IDirectDraw, (LPVOID *) &win32_driver->ddobj ); if( result != DD_OK ) { - Error( 0, "ddobj->QueryInterface : DirectX 4 or higher required" ); + Error( 0, "ddobj->QueryInterface : DirectX required" ); return 0; } @@ -219,7 +219,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver ) ddsd.dwFlags = DDSD_CAPS; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; - result = IDirectDraw4_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->primary, 0 ); + result = IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->primary, 0 ); if( result != DD_OK ) { Error( 0, "CreateSurface ( primary ) : error 0x%lx", result ); @@ -228,7 +228,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver ) /* create our clipper object */ - result = IDirectDraw4_CreateClipper( win32_driver->ddobj, 0, &win32_driver->ddclipper, 0 ); + result = IDirectDraw_CreateClipper( win32_driver->ddobj, 0, &win32_driver->ddclipper, 0 ); if( result != DD_OK ) { Error( 0, "CreateClipper : error 0x%lx", result ); @@ -246,7 +246,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver ) /* associate our primary surface with our clipper */ - result = IDirectDrawSurface4_SetClipper( win32_driver->primary, win32_driver->ddclipper ); + result = IDirectDrawSurface_SetClipper( win32_driver->primary, win32_driver->ddclipper ); if( result != DD_OK ) { Error( 0, "ddclipper->SetHWnd : error 0x%lx", result ); @@ -270,9 +270,10 @@ boolean CreatePrimary( win32_driver_t * win32_driver ) * as the primary surface. At least then we * can use h/w scaling if supported. */ -boolean CreateSecondary( win32_driver_t * win32_driver, int width, int height, int format ) +static boolean CreateSecondary( win32_driver_t * win32_driver, int width, int height, int format ) { - DDSURFACEDESC2 ddsd; + DDSURFACEDESC ddsd; + HRESULT result; if( format == XINE_IMGFMT_YV12 ) xprintf(win32_driver->xine, XINE_VERBOSITY_DEBUG, "vo_out_directx : switching to YV12 overlay type\n" ); @@ -299,7 +300,7 @@ boolean CreateSecondary( win32_driver_t * win32_driver, int width, int height, i * surface then release it */ if( win32_driver->secondary ) - IDirectDrawSurface4_Release( win32_driver->secondary ); + IDirectDrawSurface_Release( win32_driver->secondary ); memset( &ddsd, 0, sizeof( ddsd ) ); ddsd.dwSize = sizeof( ddsd ); @@ -358,48 +359,49 @@ boolean CreateSecondary( win32_driver_t * win32_driver, int width, int height, i } #endif /* RGB_SUPPORT */ - lprintf("CreateSecondary() - IDirectDraw4_CreateSurface()\n"); - - if( IDirectDraw4_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK ) + lprintf("CreateSecondary() - IDirectDraw_CreateSurface()\n"); + if( IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK ) return TRUE; /* Our fallback method is to create a back buffer * with the same image format as the primary surface */ lprintf("CreateSecondary() - Falling back to back buffer same as primary\n"); + lprintf("CreateSecondary() - act_format = (NATIVE) %d\n", IMGFMT_NATIVE); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; - - lprintf("CreateSecondary() - act_format = (NATIVE) %d\n", IMGFMT_NATIVE); - win32_driver->act_format = IMGFMT_NATIVE; - if( IDirectDraw4_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) != DD_OK ) { - /* This is bad. We cant even create a surface with - * the same format as the primary surface. */ - - Error( 0, "CreateSurface ( Secondary ) : unable to create a suitable rendering surface" ); + if( IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK ) + return TRUE; - return FALSE; - } + /* Our second fallback - all w/o HW acceleration */ + lprintf("CreateSecondary() - Falling back, disabling HW acceleration \n"); + ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; + ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; + if( (result = IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 )) == DD_OK ) + return TRUE; - return TRUE; + /* This is bad. We cant even create a surface with + * the same format as the primary surface. */ + Error( 0, "CreateSurface ( Secondary ) : unable to create a suitable rendering surface: 0x%08lX", result ); + return FALSE; } /* Destroy all direct draw driver allocated * resources. */ -void Destroy( win32_driver_t * win32_driver ) +static void Destroy( win32_driver_t * win32_driver ) { if( win32_driver->ddclipper ) IDirectDrawClipper_Release( win32_driver->ddclipper ); if( win32_driver->primary ) - IDirectDrawSurface4_Release( win32_driver->primary ); + IDirectDrawSurface_Release( win32_driver->primary ); if( win32_driver->secondary ) - IDirectDrawSurface4_Release( win32_driver->secondary ); + IDirectDrawSurface_Release( win32_driver->secondary ); if( win32_driver->ddobj ) IDirectDraw_Release( win32_driver->ddobj ); @@ -414,7 +416,7 @@ void Destroy( win32_driver_t * win32_driver ) * the h/w does not support an overlay for * the native frame format. */ -boolean CheckPixelFormat( win32_driver_t * win32_driver ) +static boolean CheckPixelFormat( win32_driver_t * win32_driver ) { DDPIXELFORMAT ddpf; HRESULT result; @@ -423,10 +425,10 @@ boolean CheckPixelFormat( win32_driver_t * win32_driver ) memset( &ddpf, 0, sizeof( DDPIXELFORMAT )); ddpf.dwSize = sizeof( DDPIXELFORMAT ); - result = IDirectDrawSurface4_GetPixelFormat( win32_driver->primary, &ddpf ); + result = IDirectDrawSurface_GetPixelFormat( win32_driver->primary, &ddpf ); if( result != DD_OK ) { - Error( 0, "IDirectDrawSurface4_GetPixelFormat ( CheckPixelFormat ) : error 0x%lx", result ); + Error( 0, "IDirectDrawSurface_GetPixelFormat ( CheckPixelFormat ) : error 0x%lx", result ); return 0; } @@ -489,10 +491,10 @@ boolean CheckPixelFormat( win32_driver_t * win32_driver ) * being pushed to the backend. */ -LPDIRECTDRAWSURFACE4 CreateBMP( win32_driver_t * win32_driver, int resource ) +static LPDIRECTDRAWSURFACE CreateBMP( win32_driver_t * win32_driver, int resource ) { - LPDIRECTDRAWSURFACE4 bmp_surf; - DDSURFACEDESC2 bmp_ddsd; + LPDIRECTDRAWSURFACE bmp_surf; + DDSURFACEDESC bmp_ddsd; HBITMAP bmp_hndl; BITMAP bmp_head; HDC hdc_dds; @@ -518,7 +520,7 @@ LPDIRECTDRAWSURFACE4 CreateBMP( win32_driver_t * win32_driver, int resource ) bmp_ddsd.dwWidth = bmp_head.bmWidth; bmp_ddsd.dwHeight = bmp_head.bmHeight; - if( IDirectDraw4_CreateSurface( win32_driver->ddobj, &bmp_ddsd, &bmp_surf, 0 ) != DD_OK ) + if( IDirectDraw_CreateSurface( win32_driver->ddobj, &bmp_ddsd, &bmp_surf, 0 ) != DD_OK ) { Error( 0, "CreateSurface ( bitmap ) : could not create dd surface" ); return 0; @@ -528,7 +530,7 @@ LPDIRECTDRAWSURFACE4 CreateBMP( win32_driver_t * win32_driver, int resource ) * create a compat dc and load * our bitmap into the compat dc */ - IDirectDrawSurface4_GetDC( bmp_surf, &hdc_dds ); + IDirectDrawSurface_GetDC( bmp_surf, &hdc_dds ); hdc_mem = CreateCompatibleDC( hdc_dds ); SelectObject( hdc_mem, bmp_hndl ); @@ -542,7 +544,7 @@ LPDIRECTDRAWSURFACE4 CreateBMP( win32_driver_t * win32_driver, int resource ) DeleteDC( hdc_mem ); DeleteObject( bmp_hndl ); - IDirectDrawSurface4_ReleaseDC( bmp_surf, hdc_dds ); + IDirectDrawSurface_ReleaseDC( bmp_surf, hdc_dds ); return bmp_surf; } @@ -552,8 +554,8 @@ LPDIRECTDRAWSURFACE4 CreateBMP( win32_driver_t * win32_driver, int resource ) * a h/w overlay of the current frame type * is supported. */ -boolean Overlay( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, - LPDIRECTDRAWSURFACE4 dst_surface, RECT * dst_rect, +static boolean Overlay( LPDIRECTDRAWSURFACE src_surface, RECT * src_rect, + LPDIRECTDRAWSURFACE dst_surface, RECT * dst_rect, COLORREF color_key ) { DWORD dw_color_key; @@ -567,10 +569,10 @@ boolean Overlay( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, memset( &ddpf, 0, sizeof( DDPIXELFORMAT )); ddpf.dwSize = sizeof( DDPIXELFORMAT ); - result = IDirectDrawSurface4_GetPixelFormat( dst_surface, &ddpf ); + result = IDirectDrawSurface_GetPixelFormat( dst_surface, &ddpf ); if( result != DD_OK ) { - Error( 0, "IDirectDrawSurface4_GetPixelFormat : could not get surface pixel format" ); + Error( 0, "IDirectDrawSurface_GetPixelFormat : could not get surface pixel format" ); return FALSE; } @@ -588,19 +590,19 @@ boolean Overlay( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, /* attempt to overlay the surface */ - result = IDirectDrawSurface4_UpdateOverlay( src_surface, src_rect, dst_surface, dst_rect, flags, &ddofx ); + result = IDirectDrawSurface_UpdateOverlay( src_surface, src_rect, dst_surface, dst_rect, flags, &ddofx ); if( result != DD_OK ) { if( result == DDERR_SURFACELOST ) { - IDirectDrawSurface4_Restore( src_surface ); - IDirectDrawSurface4_Restore( dst_surface ); + IDirectDrawSurface_Restore( src_surface ); + IDirectDrawSurface_Restore( dst_surface ); - IDirectDrawSurface4_UpdateOverlay( src_surface, src_rect, dst_surface, dst_rect, flags, &ddofx ); + IDirectDrawSurface_UpdateOverlay( src_surface, src_rect, dst_surface, dst_rect, flags, &ddofx ); } else { - Error( 0, "IDirectDrawSurface4_UpdateOverlay : error 0x%lx", result ); + Error( 0, "IDirectDrawSurface_UpdateOverlay : error 0x%lx", result ); return FALSE; } } @@ -613,8 +615,8 @@ boolean Overlay( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, * h/w overlay of the current frame format is * not supported. */ -boolean BltCopy( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, - LPDIRECTDRAWSURFACE4 dst_surface, RECT * dst_rect ) +static boolean BltCopy( LPDIRECTDRAWSURFACE src_surface, RECT * src_rect, + LPDIRECTDRAWSURFACE dst_surface, RECT * dst_rect ) { DDSURFACEDESC ddsd_target; HRESULT result; @@ -624,19 +626,19 @@ boolean BltCopy( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, /* attempt to blt the surface sontents */ - result = IDirectDrawSurface4_Blt( dst_surface, dst_rect, src_surface, src_rect, DDBLT_WAIT, 0 ); + result = IDirectDrawSurface_Blt( dst_surface, dst_rect, src_surface, src_rect, DDBLT_WAIT, 0 ); if( result != DD_OK ) { if( result != DDERR_SURFACELOST ) { - IDirectDrawSurface4_Restore( src_surface ); - IDirectDrawSurface4_Restore( dst_surface ); + IDirectDrawSurface_Restore( src_surface ); + IDirectDrawSurface_Restore( dst_surface ); - IDirectDrawSurface4_Blt( dst_surface, dst_rect, src_surface, src_rect, DDBLT_WAIT, 0 ); + IDirectDrawSurface_Blt( dst_surface, dst_rect, src_surface, src_rect, DDBLT_WAIT, 0 ); } else { - Error( 0, "IDirectDrawSurface4_Blt : error 0x%lx", result ); + Error( 0, "IDirectDrawSurface_Blt : error 0x%lx", result ); return FALSE; } } @@ -650,7 +652,7 @@ boolean BltCopy( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect, * moving the image contents contained in our * secondary surface to our primary surface. */ -boolean DisplayFrame( win32_driver_t * win32_driver ) +static boolean DisplayFrame( win32_driver_t * win32_driver ) { int view_width; int view_height; @@ -755,10 +757,10 @@ boolean DisplayFrame( win32_driver_t * win32_driver ) /* Lock our back buffer to update its contents. */ -void * Lock( void * surface ) +static void * Lock( void * surface ) { - LPDIRECTDRAWSURFACE4 lock_surface = ( LPDIRECTDRAWSURFACE4 ) surface; - DDSURFACEDESC2 ddsd; + LPDIRECTDRAWSURFACE lock_surface = ( LPDIRECTDRAWSURFACE ) surface; + DDSURFACEDESC ddsd; HRESULT result; if( !surface ) @@ -767,11 +769,11 @@ void * Lock( void * surface ) memset( &ddsd, 0, sizeof( ddsd ) ); ddsd.dwSize = sizeof( ddsd ); - result = IDirectDrawSurface4_Lock( lock_surface, 0, &ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); + result = IDirectDrawSurface_Lock( lock_surface, 0, &ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); if( result == DDERR_SURFACELOST ) { - IDirectDrawSurface4_Restore( lock_surface ); - result = IDirectDrawSurface4_Lock( lock_surface, 0, &ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); + IDirectDrawSurface_Restore( lock_surface ); + result = IDirectDrawSurface_Lock( lock_surface, 0, &ddsd, DDLOCK_WAIT | DDLOCK_NOSYSLOCK, 0 ); if( result != DD_OK ) return 0; @@ -791,14 +793,14 @@ void * Lock( void * surface ) /* Unlock our back buffer to prepair for display. */ -void Unlock( void * surface ) +static void Unlock( void * surface ) { - LPDIRECTDRAWSURFACE4 lock_surface = ( LPDIRECTDRAWSURFACE4 ) surface; + LPDIRECTDRAWSURFACE lock_surface = ( LPDIRECTDRAWSURFACE ) surface; if( !surface ) return; - IDirectDrawSurface4_Unlock( lock_surface, 0 ); + IDirectDrawSurface_Unlock( lock_surface, 0 ); } /* ----------------------------------------- diff --git a/src/xine-engine/events.c b/src/xine-engine/events.c index e7aa28772..ef399b5c6 100644 --- a/src/xine-engine/events.c +++ b/src/xine-engine/events.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: events.c,v 1.27 2005/06/13 00:32:12 miguelfreitas Exp $ + * $Id: events.c,v 1.28 2005/09/19 16:14:02 valtri Exp $ * * Event handling functions * @@ -183,6 +183,10 @@ void xine_event_dispose_queue (xine_event_queue_t *queue) { xine_event_free (event); } + pthread_mutex_destroy(&queue->lock); + pthread_cond_destroy(&queue->new_event); + pthread_cond_destroy(&queue->events_processed); + free (queue); } diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c index d7005b733..24f51af45 100644 --- a/src/xine-engine/load_plugins.c +++ b/src/xine-engine/load_plugins.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: load_plugins.c,v 1.215 2005/09/11 22:07:48 miguelfreitas Exp $ + * $Id: load_plugins.c,v 1.216 2005/09/19 16:14:02 valtri Exp $ * * * Load input/demux/audio_out/video_out/codec plugins @@ -2506,7 +2506,9 @@ void _x_dispose_plugins (xine_t *this) { for (i = 0; this->plugin_catalog->prio_desc[i]; i++) free(this->plugin_catalog->prio_desc[i]); - + + pthread_mutex_destroy(&this->plugin_catalog->lock); + free (this->plugin_catalog); } } diff --git a/src/xine-engine/metronom.h b/src/xine-engine/metronom.h index 78834e02a..2a8f0e94d 100644 --- a/src/xine-engine/metronom.h +++ b/src/xine-engine/metronom.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: metronom.h,v 1.62 2004/09/26 22:54:52 valtri Exp $ + * $Id: metronom.h,v 1.63 2005/09/19 16:14:02 valtri Exp $ * * metronom: general pts => virtual calculation/assoc * @@ -202,7 +202,6 @@ struct metronom_s { int discontinuity_handled_count; pthread_cond_t video_discontinuity_reached; pthread_cond_t audio_discontinuity_reached; - pthread_cond_t cancel; int force_video_jump; int force_audio_jump; diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c index 40b773af7..ce37b289e 100644 --- a/src/xine-engine/xine.c +++ b/src/xine-engine/xine.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine.c,v 1.317 2005/09/11 22:07:48 miguelfreitas Exp $ + * $Id: xine.c,v 1.318 2005/09/19 16:14:02 valtri Exp $ */ /* @@ -232,6 +232,7 @@ static xine_ticket_t *ticket_init(void) { pthread_mutex_init(&port_ticket->lock, NULL); pthread_mutex_init(&port_ticket->revoke_lock, NULL); pthread_cond_init(&port_ticket->issued, NULL); + pthread_cond_init(&port_ticket->revoked, NULL); return port_ticket; } |