summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrantišek Dvořák <valtri@users.sourceforge.net>2005-09-19 16:14:02 +0000
committerFrantišek Dvořák <valtri@users.sourceforge.net>2005-09-19 16:14:02 +0000
commit097426600056a112752e92eb1c13f0d6900f3907 (patch)
tree5cc819adfef1b280bc5bc0b7a6bd5f92edfa9f55
parent801a491a64cb01af880bd2093b3d350be38219a7 (diff)
downloadxine-lib-097426600056a112752e92eb1c13f0d6900f3907.tar.gz
xine-lib-097426600056a112752e92eb1c13f0d6900f3907.tar.bz2
*BUGFIX*
added missing mutex init in xine_ticket (fixes pause assert with win32-pthreads) added missing destroys due to pthread doc spells and houskeeping use directx of older versions too, possibility to use xine w/o HW accel CVS patchset: 7738 CVS date: 2005/09/19 16:14:02
-rw-r--r--ChangeLog2
-rw-r--r--doc/README.MINGWCROSS11
-rw-r--r--doc/README.WIN321
-rw-r--r--doc/hackersguide/output.sgml2
-rw-r--r--src/post/deinterlace/xine_plugin.c3
-rwxr-xr-xsrc/video_out/video_out_directx.c144
-rw-r--r--src/xine-engine/events.c6
-rw-r--r--src/xine-engine/load_plugins.c6
-rw-r--r--src/xine-engine/metronom.h3
-rw-r--r--src/xine-engine/xine.c3
10 files changed, 99 insertions, 82 deletions
diff --git a/ChangeLog b/ChangeLog
index 948ab4058..20105fc3f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}