diff --git a/Makefile.am b/Makefile.am index 07e4d1b1eb..2d7587eceb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -417,7 +417,7 @@ endif noinst_LIBRARIES += $(noinst_LIBRARIES_mozilla) -MOSTLYCLEANFILES += mozilla/libvlcplugin$(LIBEXT) +MOSTLYCLEANFILES += $(LIBRARIES_mozilla) EXTRA_DIST += $(SOURCES_mozilla) mozilla/vlcintf.idl @@ -430,7 +430,20 @@ SOURCES_mozilla = \ mozilla/vlcpeer.cpp \ mozilla/vlcpeer.h \ mozilla/classinfo.h \ - mozilla/npunix.c + $(SOURCES_mozilla_win32) \ + $(SOURCES_mozilla_unix) + +# Under Win32, Mozilla plugins need to be named NP******.DLL, but under Unix +# the common naming scheme is lib******plugin.so. Also, we need npwin.cpp +# under Win32 and npunix.c under Unix. +if HAVE_WIN32 +LIBRARIES_mozilla = mozilla/npvlc$(LIBEXT) +SOURCES_mozilla_win32 = mozilla/npwin.cpp +CPPFLAGS_mozilla_EXTRA = -DXP_WIN -DXP_WIN32 +else +LIBRARIES_mozilla = mozilla/libvlcplugin$(LIBEXT) +SOURCES_mozilla_unix = mozilla/npunix.c +endif if BUILD_MOZILLA noinst_LIBRARIES_mozilla = mozilla/libvlcplugin.a @@ -438,20 +451,22 @@ noinst_LIBRARIES_mozilla = mozilla/libvlcplugin.a mozilla_libvlcplugin_a_SOURCES = $(SOURCES_mozilla) $(BUILT_SOURCES_mozilla) \ $(SOURCES_libgetopt) mozilla_libvlcplugin_a_CFLAGS = $(CPPFLAGS_pic) $(CFLAGS_pic) \ - $(CPPFLAGS_mozilla) $(CFLAGS_mozilla) + $(CPPFLAGS_mozilla) $(CFLAGS_mozilla) \ + $(CPPFLAGS_mozilla_EXTRA) mozilla_libvlcplugin_a_CXXFLAGS = $(CPPFLAGS_pic) $(CXXFLAGS_pic) \ - $(CPPFLAGS_mozilla) $(CXXFLAGS_mozilla) -mozilla_libvlcplugin_a_DEPENDENCIES = lib/libvlc_pic.a $(L_builtin_pic) + $(CPPFLAGS_mozilla) $(CXXFLAGS_mozilla) \ + $(CPPFLAGS_mozilla_EXTRA) +mozilla_libvlcplugin_a_DEPENDENCIES = lib/libvlc_pic.a $(L_builtin_pic) $(DATA_npvlc_rc) BUILT_SOURCES_mozilla = mozilla/vlcintf.h $(SOURCES_mozilla): mozilla/vlcintf.h -mozilla_libvlcplugin_DATA = mozilla/libvlcplugin$(LIBEXT) -mozilla_libvlcplugindir = $(libdir)/mozilla/plugins -mozilla/libvlcplugin$(LIBEXT): mozilla/libvlcplugin.a $(L_builtin_pic) - $(CC) -o $@ $(mozilla_libvlcplugin_a_OBJECTS) lib/libvlc_pic.a \ - $(L_builtin_pic) -shared $(LDFLAGS) $(LDFLAGS_vlc) \ - $(LDFLAGS_mozilla) $(LDFLAGS_builtin_pic) +mozilla_plugin_DATA = $(LIBRARIES_mozilla) +mozilla_plugindir = $(libdir)/mozilla/plugins +$(LIBRARIES_mozilla): mozilla/libvlcplugin.a $(L_builtin_pic) + $(CXXLINK) -o $@ $(mozilla_libvlcplugin_a_OBJECTS) $(DATA_npvlc_rc) \ + lib/libvlc_pic.a $(L_builtin_pic) -shared $(LDFLAGS) \ + $(LDFLAGS_vlc) $(LDFLAGS_mozilla) $(LDFLAGS_builtin_pic) mozilla_vlcintf_xpt_DATA = mozilla/vlcintf.xpt mozilla_vlcintf_xptdir = $(libdir)/mozilla/components @@ -462,6 +477,14 @@ mozilla/vlcintf.xpt: Makefile mozilla/vlcintf.idl mozilla/vlcintf.h: Makefile mozilla/vlcintf.idl $(XPIDL) -I/usr/share/idl/mozilla -m header \ -o mozilla/vlcintf mozilla/vlcintf.idl + +if HAVE_WIN32 +DATA_npvlc_rc = $(noinst_mozilla_npvlc_rc_DATA) +noinst_mozilla_npvlc_rc_DATA = mozilla/npvlc_rc.$(OBJEXT) +noinst_mozilla_npvlc_rcdir = $(libdir) +mozilla/npvlc_rc.$(OBJEXT): mozilla/npvlc_rc.rc + $(WINDRES) -i $< -o $@ +endif endif ############################################################################### diff --git a/modules/misc/testsuite/test2.cpp b/modules/misc/testsuite/test2.cpp index 629b4215e4..df5e1ac88f 100644 --- a/modules/misc/testsuite/test2.cpp +++ b/modules/misc/testsuite/test2.cpp @@ -2,7 +2,7 @@ * test2.cpp : Empty C++ module for vlc ***************************************************************************** * Copyright (C) 2000-2001 VideoLAN - * $Id: test2.cpp,v 1.1 2002/10/04 13:13:54 sam Exp $ + * $Id: test2.cpp,v 1.2 2002/10/22 21:10:27 sam Exp $ * * Authors: Samuel Hocevar * @@ -33,8 +33,8 @@ *****************************************************************************/ vlc_module_begin(); /* Minimal C++ usage */ - string description = "C++ module that does nothing"; - set_description( _( description.c_str() ) ); + std::string description = "C++ module that does nothing"; + set_description( (char*)_( description.c_str() ) ); vlc_module_end(); diff --git a/modules/video_output/directx/directx.c b/modules/video_output/directx/directx.c index 80bf6f169f..089bbc7fb3 100644 --- a/modules/video_output/directx/directx.c +++ b/modules/video_output/directx/directx.c @@ -2,7 +2,7 @@ * vout.c: Windows DirectX video output display method ***************************************************************************** * Copyright (C) 2001 VideoLAN - * $Id: directx.c,v 1.3 2002/10/06 19:28:28 gbazin Exp $ + * $Id: directx.c,v 1.4 2002/10/22 21:10:28 sam Exp $ * * Authors: Gildas Bazin * @@ -105,6 +105,7 @@ vlc_module_begin(); add_bool( "directx-use-sysmem", 0, NULL, SYSMEM_TEXT, SYSMEM_LONGTEXT ); set_description( _("DirectX video module") ); set_capability( "video output", 100 ); + add_shortcut( "directx" ); set_callbacks( OpenVideo, CloseVideo ); vlc_module_end(); diff --git a/mozilla/npvlc_rc.rc b/mozilla/npvlc_rc.rc new file mode 100644 index 0000000000..4482dbbc5e --- /dev/null +++ b/mozilla/npvlc_rc.rc @@ -0,0 +1,44 @@ + +///////////////////////////////////////////////////////////////////////////// +// +// VideoLAN Client Plugin description. +// + +//VS_VERSION_INFO VERSIONINFO +1 VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L + +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "ProductName", "VideoLAN Client Plugin\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "OriginalFilename", "npvlc.dll\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "FileDescription", "VideoLAN Client Multimedia Player Plugin

VideoLAN WWW: http://www.videolan.org/\0" + VALUE "InternalName", "npvlc\0" + VALUE "CompanyName", "VideoLAN\0" + VALUE "LegalCopyright", "Copyright VideoLAN \251 1996-2002\0" + VALUE "MIMEType", "audio/mpeg|audio/x-mpeg|video/mpeg|video/x-mpeg|video/mpeg-system|video/x-mpeg-system|video/mpeg4|audio/mpeg4|application/mpeg4-iod|application/mpeg4-muxcodetable|video/x-msvideo|video/quicktime|application/x-vlc-plugin\0" + VALUE "FileExtents", "mp2,mp3,mpga,mpega|mp2,mp3,mpga,mpega|mpg,mpeg,mpe|mpg,mpeg,mpe|mpg,mpeg,vob|mpg,mpeg,vob|mp4,mpg4|mp4,mpg4|mp4,mpg4|mp4,mpg4|avi|mov,qt|\0" + VALUE "FileOpenName", "MPEG audio|MPEG audio|MPEG video|MPEG video|MPEG video|MPEG video|MPEG-4 video|MPEG-4 audio|MPEG-4 video|MPEG-4 video|AVI video|QuickTime video|VLC plugin\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + diff --git a/mozilla/npwin.cpp b/mozilla/npwin.cpp new file mode 100644 index 0000000000..7a0dde5466 --- /dev/null +++ b/mozilla/npwin.cpp @@ -0,0 +1,361 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: NPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Netscape Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the NPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the NPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _NPAPI_H_ +#include "npapi.h" +#endif +#ifndef _NPUPP_H_ +#include "npupp.h" +#endif + +//\\// DEFINE +#define NP_EXPORT + +//\\// GLOBAL DATA +NPNetscapeFuncs* g_pNavigatorFuncs = 0; +JRIGlobalRef Private_GetJavaClass(void); + +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\. +////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//. +// Private_GetJavaClass (global function) +// +// Given a Java class reference (thru NPP_GetJavaClass) inform JRT +// of this class existence +// +JRIGlobalRef +Private_GetJavaClass(void) +{ + jref clazz = NPP_GetJavaClass(); + if (clazz) { + JRIEnv* env = NPN_GetJavaEnv(); + return JRI_NewGlobalRef(env, clazz); + } + return NULL; +} + +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\. +////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//. +// PLUGIN DLL entry points +// +// These are the Windows specific DLL entry points. They must be exoprted +// + +// we need these to be global since we have to fill one of its field +// with a data (class) which requires knowlwdge of the navigator +// jump-table. This jump table is known at Initialize time (NP_Initialize) +// which is called after NP_GetEntryPoint +static NPPluginFuncs* g_pluginFuncs; + +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\. +////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//. +// NP_GetEntryPoints +// +// fills in the func table used by Navigator to call entry points in +// plugin DLL. Note that these entry points ensure that DS is loaded +// by using the NP_LOADDS macro, when compiling for Win16 +// +#ifdef __MINGW32__ +extern "C" NPError +#else +NPError WINAPI NP_EXPORT +#endif +NP_GetEntryPoints(NPPluginFuncs* pFuncs) +{ + // trap a NULL ptr + if(pFuncs == NULL) + return NPERR_INVALID_FUNCTABLE_ERROR; + + // if the plugin's function table is smaller than the plugin expects, + // then they are incompatible, and should return an error + + pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR; + pFuncs->newp = NPP_New; + pFuncs->destroy = NPP_Destroy; + pFuncs->setwindow = NPP_SetWindow; + pFuncs->newstream = NPP_NewStream; + pFuncs->destroystream = NPP_DestroyStream; + pFuncs->asfile = NPP_StreamAsFile; + pFuncs->writeready = NPP_WriteReady; + pFuncs->write = NPP_Write; + pFuncs->print = NPP_Print; + pFuncs->getvalue = NPP_GetValue; + pFuncs->event = 0; /// reserved + + g_pluginFuncs = pFuncs; + + return NPERR_NO_ERROR; +} + +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\. +////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//. +// NP_Initialize +// +// called immediately after the plugin DLL is loaded +// +#ifdef __MINGW32__ +extern "C" NPError +#else +NPError WINAPI NP_EXPORT +#endif +NP_Initialize(NPNetscapeFuncs* pFuncs) +{ + // trap a NULL ptr + if(pFuncs == NULL) + return NPERR_INVALID_FUNCTABLE_ERROR; + + g_pNavigatorFuncs = pFuncs; // save it for future reference + + // if the plugin's major ver level is lower than the Navigator's, + // then they are incompatible, and should return an error + if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR) + return NPERR_INCOMPATIBLE_VERSION_ERROR; + + // We have to defer these assignments until g_pNavigatorFuncs is set + int navMinorVers = g_pNavigatorFuncs->version & 0xFF; + + if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) { + g_pluginFuncs->urlnotify = NPP_URLNotify; + } + + if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) { + g_pluginFuncs->javaClass = Private_GetJavaClass(); + } + + // NPP_Initialize is a standard (cross-platform) initialize function. + return NPP_Initialize(); +} + +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\. +////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//. +// NP_Shutdown +// +// called immediately before the plugin DLL is unloaded. +// This functio shuold check for some ref count on the dll to see if it is +// unloadable or it needs to stay in memory. +// +#ifdef __MINGW32__ +extern "C" NPError +#else +NPError WINAPI NP_EXPORT +#endif +NP_Shutdown() +{ + NPP_Shutdown(); + g_pNavigatorFuncs = NULL; + return NPERR_NO_ERROR; +} + +// END - PLUGIN DLL entry points +////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//. +//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\. + +/* NAVIGATOR Entry points */ + +/* These entry points expect to be called from within the plugin. The + noteworthy assumption is that DS has already been set to point to the + plugin's DLL data segment. Don't call these functions from outside + the plugin without ensuring DS is set to the DLLs data segment first, + typically using the NP_LOADDS macro +*/ + +/* returns the major/minor version numbers of the Plugin API for the plugin + and the Navigator +*/ +void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor) +{ + *plugin_major = NP_VERSION_MAJOR; + *plugin_minor = NP_VERSION_MINOR; + *netscape_major = HIBYTE(g_pNavigatorFuncs->version); + *netscape_minor = LOBYTE(g_pNavigatorFuncs->version); +} + +NPError NPN_GetValue(NPP instance, NPNVariable variable, void *result) +{ + return g_pNavigatorFuncs->getvalue(instance, variable, result); +} + + +/* causes the specified URL to be fetched and streamed in +*/ +NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target, void* notifyData) + +{ + int navMinorVers = g_pNavigatorFuncs->version & 0xFF; + NPError err; + if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) { + err = g_pNavigatorFuncs->geturlnotify(instance, url, target, notifyData); + } + else { + err = NPERR_INCOMPATIBLE_VERSION_ERROR; + } + return err; +} + + +NPError NPN_GetURL(NPP instance, const char *url, const char *target) +{ + return g_pNavigatorFuncs->geturl(instance, url, target); +} + +NPError NPN_PostURLNotify(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData) +{ + int navMinorVers = g_pNavigatorFuncs->version & 0xFF; + NPError err; + if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) { + err = g_pNavigatorFuncs->posturlnotify(instance, url, window, len, buf, file, notifyData); + } + else { + err = NPERR_INCOMPATIBLE_VERSION_ERROR; + } + return err; +} + + +NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file) +{ + return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file); +} + +/* Requests that a number of bytes be provided on a stream. Typically + this would be used if a stream was in "pull" mode. An optional + position can be provided for streams which are seekable. +*/ +NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList) +{ + return g_pNavigatorFuncs->requestread(stream, rangeList); +} + +/* Creates a new stream of data from the plug-in to be interpreted + by Netscape in the current window. +*/ +NPError NPN_NewStream(NPP instance, NPMIMEType type, + const char* target, NPStream** stream) +{ + int navMinorVersion = g_pNavigatorFuncs->version & 0xFF; + NPError err; + + if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) { + err = g_pNavigatorFuncs->newstream(instance, type, target, stream); + } + else { + err = NPERR_INCOMPATIBLE_VERSION_ERROR; + } + return err; +} + +/* Provides len bytes of data. +*/ +int32 NPN_Write(NPP instance, NPStream *stream, + int32 len, void *buffer) +{ + int navMinorVersion = g_pNavigatorFuncs->version & 0xFF; + int32 result; + + if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) { + result = g_pNavigatorFuncs->write(instance, stream, len, buffer); + } + else { + result = -1; + } + return result; +} + +/* Closes a stream object. +reason indicates why the stream was closed. +*/ +NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason) +{ + int navMinorVersion = g_pNavigatorFuncs->version & 0xFF; + NPError err; + + if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) { + err = g_pNavigatorFuncs->destroystream(instance, stream, reason); + } + else { + err = NPERR_INCOMPATIBLE_VERSION_ERROR; + } + return err; +} + +/* Provides a text status message in the Netscape client user interface +*/ +void NPN_Status(NPP instance, const char *message) +{ + g_pNavigatorFuncs->status(instance, message); +} + +/* returns the user agent string of Navigator, which contains version info +*/ +const char* NPN_UserAgent(NPP instance) +{ + return g_pNavigatorFuncs->uagent(instance); +} + +/* allocates memory from the Navigator's memory space. Necessary so that + saved instance data may be freed by Navigator when exiting. +*/ + + +void* NPN_MemAlloc(uint32 size) +{ + return g_pNavigatorFuncs->memalloc(size); +} + +/* reciprocal of MemAlloc() above +*/ +void NPN_MemFree(void* ptr) +{ + g_pNavigatorFuncs->memfree(ptr); +} + +/* private function to Netscape. do not use! +*/ +void NPN_ReloadPlugins(NPBool reloadPages) +{ + g_pNavigatorFuncs->reloadplugins(reloadPages); +} + +JRIEnv* NPN_GetJavaEnv(void) +{ + return g_pNavigatorFuncs->getJavaEnv(); +} + +jref NPN_GetJavaPeer(NPP instance) +{ + return g_pNavigatorFuncs->getJavaPeer(instance); +} + diff --git a/mozilla/vlcplugin.h b/mozilla/vlcplugin.h index 5d0eef6fdc..02546a5a8d 100644 --- a/mozilla/vlcplugin.h +++ b/mozilla/vlcplugin.h @@ -2,7 +2,7 @@ * vlcplugin.h: a VideoLAN plugin for Mozilla ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: vlcplugin.h,v 1.5 2002/10/11 22:32:56 sam Exp $ + * $Id: vlcplugin.h,v 1.6 2002/10/22 21:10:28 sam Exp $ * * Authors: Samuel Hocevar * @@ -40,11 +40,15 @@ public: NPWindow* fWindow; uint16 fMode; +#ifdef WIN32 + +#else /* UNIX data members */ Window window; Display *display; uint32 x, y; uint32 width, height; +#endif /* vlc data members */ int i_vlc; @@ -60,7 +64,7 @@ private: /******************************************************************************* * Plugin properties. ******************************************************************************/ -#define PLUGIN_NAME "VideoLAN Client Plug-in" +#define PLUGIN_NAME "VideoLAN Client Plugin" #define PLUGIN_DESCRIPTION \ "VideoLAN Client Multimedia Player Plugin
" \ "
" \ diff --git a/mozilla/vlcshell.cpp b/mozilla/vlcshell.cpp index 30ac75ba40..8ec4e6a3d5 100644 --- a/mozilla/vlcshell.cpp +++ b/mozilla/vlcshell.cpp @@ -2,7 +2,7 @@ * vlcshell.c: a VideoLAN Client plugin for Mozilla ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: vlcshell.cpp,v 1.4 2002/10/11 22:32:56 sam Exp $ + * $Id: vlcshell.cpp,v 1.5 2002/10/22 21:10:28 sam Exp $ * * Authors: Samuel Hocevar * @@ -168,10 +168,6 @@ NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, { "vlc" /*, "--plugin-path", "/home/sam/videolan/vlc_MAIN/plugins"*/ - , "--vout", "xvideo,x11,dummy" - , "--aout", "dsp" - , "--intf", "dummy" - /*, "--noaudio"*/ }; if( instance == NULL ) @@ -190,7 +186,11 @@ NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, p_plugin->fMode = mode; p_plugin->fWindow = NULL; +#ifdef WIN32 + +#else p_plugin->window = 0; +#endif p_plugin->i_vlc = VLC_Create(); if( p_plugin->i_vlc < 0 ) @@ -211,10 +211,20 @@ NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, return NPERR_GENERIC_ERROR; } - value.psz_string = "xvideo,x11,dummy"; - VLC_Set( p_plugin->i_vlc, "conf::vout", value ); value.psz_string = "dummy"; VLC_Set( p_plugin->i_vlc, "conf::intf", value ); +#ifdef WIN32 + value.psz_string = "directx,dummy"; +#else + value.psz_string = "xvideo,x11,dummy"; +#endif + VLC_Set( p_plugin->i_vlc, "conf::vout", value ); +#ifdef WIN32 + value.psz_string = "none";//"directx,waveout,dummy"; +#else + value.psz_string = "dsp,dummy"; +#endif + VLC_Set( p_plugin->i_vlc, "conf::aout", value ); p_plugin->b_stream = 0; p_plugin->b_autoplay = 0; @@ -295,8 +305,12 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) VlcPlugin* p_plugin = (VlcPlugin*)instance->pdata; /* Write the window ID for vlc */ - value.p_address = (void*)window->window; - VLC_Set( p_plugin->i_vlc, "drawable", value ); + //value.p_address = (void*)window->window; + //VLC_Set( p_plugin->i_vlc, "drawable", value ); + /* FIXME: this cast sucks */ + value.i_int = (int) (long long) (void *) window->window; + VLC_Set( p_plugin->i_vlc, "conf::x11-drawable", value ); + VLC_Set( p_plugin->i_vlc, "conf::xvideo-drawable", value ); /* * PLUGIN DEVELOPERS: @@ -306,6 +320,9 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) * size changes, etc. */ +#ifdef WIN32 + +#else Widget netscape_widget; p_plugin->window = (Window) window->window; @@ -318,6 +335,7 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) netscape_widget = XtWindowToWidget(p_plugin->display, p_plugin->window); XtAddEventHandler(netscape_widget, ExposureMask, FALSE, (XtEventHandler)Redraw, p_plugin); Redraw(netscape_widget, (XtPointer)p_plugin, NULL); +#endif p_plugin->fWindow = window; @@ -400,7 +418,7 @@ int32 NPP_WriteReady( NPP instance, NPStream *stream ) int32 NPP_Write( NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer ) { - fprintf(stderr, "NPP_Write %i\n", len); + fprintf(stderr, "NPP_Write %i\n", (int)len); if( instance != NULL ) { diff --git a/src/misc/messages.c b/src/misc/messages.c index 09166bc765..fb33a1425f 100644 --- a/src/misc/messages.c +++ b/src/misc/messages.c @@ -4,7 +4,7 @@ * modules, especially intf modules. See config.h for output configuration. ***************************************************************************** * Copyright (C) 1998-2002 VideoLAN - * $Id: messages.c,v 1.15 2002/10/14 16:46:56 sam Exp $ + * $Id: messages.c,v 1.16 2002/10/22 21:10:28 sam Exp $ * * Authors: Vincent Seguin * Samuel Hocevar @@ -480,6 +480,8 @@ static void PrintMsg ( vlc_object_t * p_this, msg_item_t * p_item ) p_item->psz_module, psz_object, ppsz_type[i_type], p_item->psz_msg ); } + + fflush( stderr ); } /*****************************************************************************