* ./mozilla/vlcshell.cpp: ported the Mozilla plugin to Windows.
authorSam Hocevar <sam@videolan.org>
Tue, 22 Oct 2002 21:10:28 +0000 (21:10 +0000)
committerSam Hocevar <sam@videolan.org>
Tue, 22 Oct 2002 21:10:28 +0000 (21:10 +0000)
    For the moment it spawns a separate window and seems to behave nastily
    (read: crashes) when the target has sound, but the javascript interface
    works perfectly, for instance.

    To build it, I installed Mozilla development files in my mingw32 dir
    and hacked mozilla-config so that it uses these files. I also hacked
    jri_md.h and jni_md.h to put "defined(_MSC_VER) || defined(__MINGW32__)"
    where it read "defined(_MSC_VER)". No other changes were necessary.

Makefile.am
modules/misc/testsuite/test2.cpp
modules/video_output/directx/directx.c
mozilla/npvlc_rc.rc [new file with mode: 0644]
mozilla/npwin.cpp [new file with mode: 0644]
mozilla/vlcplugin.h
mozilla/vlcshell.cpp
src/misc/messages.c

index 07e4d1b..2d7587e 100644 (file)
@@ -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
 
 ###############################################################################
index 629b421..df5e1ac 100644 (file)
@@ -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 <sam@zoy.org>
  *
@@ -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();
 
 
index 80bf6f1..089bbc7 100644 (file)
@@ -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 <gbazin@netcourrier.com>
  *
@@ -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 (file)
index 0000000..4482dbb
--- /dev/null
@@ -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<br><br>VideoLAN WWW: <a href=""http://www.videolan.org/"">http://www.videolan.org/</a>\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 (file)
index 0000000..7a0dde5
--- /dev/null
@@ -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);
+}
+
index 5d0eef6..02546a5 100644 (file)
@@ -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 <sam@zoy.org>
  *
@@ -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 <br>" \
     " <br>" \
index 30ac75b..8ec4e6a 100644 (file)
@@ -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 <sam@zoy.org>
  *
@@ -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 )
     {
index 09166bc..fb33a14 100644 (file)
@@ -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 <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -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 );
 }
 
 /*****************************************************************************