#define __VLCPLUGIN_H__
#include <vlc/vlc.h>
-#include <pthread.h>
+
+// Setup XP_MACOSX, XP_UNIX, XP_WIN
+#if defined(_WIN32)
+#define XP_WIN 1
+#elif defined(__APPLE__)
+#define XP_MACOSX 1
+#else
+#define XP_UNIX 1
+#define MOZ_X11 1
+#endif
+
#include <npapi.h>
#include <vector>
#ifdef XP_WIN
/* Windows stuff */
+# include <winbase.h>
+# include <windows.h>
#endif
#ifdef XP_MACOSX
#endif
#ifdef XP_UNIX
+# include <pthread.h>
/* X11 stuff */
# include <X11/Xlib.h>
# include <X11/Intrinsic.h>
# define __MIN(a, b) ( ((a) < (b)) ? (a) : (b) )
#endif
+typedef struct {
+#if defined(XP_UNIX)
+ pthread_mutex_t mutex;
+#elif defined(XP_WIN)
+ CRITICAL_SECTION cs;
+#else
+#warning "locking not implemented in this platform"
+#endif
+} plugin_lock_t;
+
+
typedef enum vlc_toolbar_clicked_e {
clicked_Unknown = 0,
clicked_Play,
}
};
-typedef bitmap<libvlc_num_event_types> eventtypes_bitmap_t;
+typedef bitmap<libvlc_VlmMediaInstanceStatusError+1> eventtypes_bitmap_t;
class EventObj: private eventtypes_bitmap_t
void *_ud;
public:
EventObj(): _em(NULL) { /* deferred to init() */ }
- bool init() { return pthread_mutex_init(&mutex, NULL) == 0; }
- ~EventObj() { pthread_mutex_destroy(&mutex); }
+ bool init();
+ ~EventObj();
void deliver(NPP browser);
void callback(const libvlc_event_t*);
lr_l _llist;
ev_l _elist;
- pthread_mutex_t mutex;
+ plugin_lock_t lock;
bool ask_for_event(event_t e);
void unask_for_event(event_t e);
class VlcPlugin
{
public:
+#if (((NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR) < 20)
VlcPlugin( NPP, uint16 );
+#else
+ VlcPlugin( NPP, uint16_t );
+#endif
virtual ~VlcPlugin();
NPError init(int argc, char* const argn[], char* const argv[]);
vlc_toolbar_clicked_t getToolbarButtonClicked( int i_xpos, int i_ypos );
#endif
+#if (((NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR) < 20)
uint16 i_npmode; /* either NP_EMBED or NP_FULL */
+#else
+ uint16_t i_npmode; /* either NP_EMBED or NP_FULL */
+#endif
/* plugin properties */
int b_stream;
void playlist_play()
{
+ if( playlist_isplaying() )
+ playlist_stop();
if( libvlc_media_player||playlist_select(0) )
libvlc_media_player_play(libvlc_media_player);
}