Commit 37a18cbf authored by Jean-Paul Saman's avatar Jean-Paul Saman

mozilla: fix building for win32 (events not implemented yet)

ifdef the dependency on pthread for windows. It restricts pthread usage to XP_UNIX only. The events object should be extended to support MacOS X and Win32 too, this will be done in coming commits.
Signed-off-by: Jean-Paul Saman's avatarJean-Paul Saman <jean-paul.saman@m2x.nl>
parent fcc3616f
...@@ -36,7 +36,12 @@ ...@@ -36,7 +36,12 @@
#include "control/npolibvlc.h" #include "control/npolibvlc.h"
#include <ctype.h> #include <ctype.h>
#include <pthread.h> #if defined(XP_UNIX)
# include <pthread.h>
#else
#warning "locking not implemented for this platform"
#endif
#include <stdio.h> #include <stdio.h>
/***************************************************************************** /*****************************************************************************
...@@ -88,14 +93,34 @@ static bool boolValue(const char *value) { ...@@ -88,14 +93,34 @@ static bool boolValue(const char *value) {
!strcasecmp(value, "yes") ); !strcasecmp(value, "yes") );
} }
bool EventObj::init()
{
#if defined(XP_UNIX)
return pthread_mutex_init(&mutex, NULL) == 0;
#else
#warning "locking not implemented for this platform"
#endif
}
EventObj::~EventObj()
{
#if defined(XP_UNIX)
pthread_mutex_destroy(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
}
void EventObj::deliver(NPP browser) void EventObj::deliver(NPP browser)
{ {
NPVariant result; NPVariant result;
NPVariant params[1]; NPVariant params[1];
#if defined(XP_UNIX)
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
for( ev_l::iterator i=_elist.begin();i!=_elist.end();++i ) for( ev_l::iterator i=_elist.begin();i!=_elist.end();++i )
{ {
libvlc_event_type_t event = *i; libvlc_event_type_t event = *i;
...@@ -114,8 +139,11 @@ void EventObj::deliver(NPP browser) ...@@ -114,8 +139,11 @@ void EventObj::deliver(NPP browser)
} }
} }
_elist.clear(); _elist.clear();
#if defined(XP_UNIX)
pthread_mutex_unlock(&mutex); pthread_mutex_unlock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
} }
void VlcPlugin::eventAsync(void *param) void VlcPlugin::eventAsync(void *param)
...@@ -126,18 +154,24 @@ void VlcPlugin::eventAsync(void *param) ...@@ -126,18 +154,24 @@ void VlcPlugin::eventAsync(void *param)
void EventObj::callback(const libvlc_event_t* event) void EventObj::callback(const libvlc_event_t* event)
{ {
#if defined(XP_UNIX)
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
if( have_event(event->type) ) if( have_event(event->type) )
_elist.push_back(event->type); _elist.push_back(event->type);
#if defined(XP_UNIX)
pthread_mutex_unlock(&mutex); pthread_mutex_unlock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
} }
void VlcPlugin::event_callback(const libvlc_event_t* event, void *param) void VlcPlugin::event_callback(const libvlc_event_t* event, void *param)
{ {
VlcPlugin *plugin = (VlcPlugin*)param; VlcPlugin *plugin = (VlcPlugin*)param;
#ifdef XP_UNIX #if defined(XP_UNIX)
plugin->events.callback(event); plugin->events.callback(event);
NPN_PluginThreadAsyncCall(plugin->getBrowser(), eventAsync, plugin); NPN_PluginThreadAsyncCall(plugin->getBrowser(), eventAsync, plugin);
#else #else
......
...@@ -135,8 +135,8 @@ private: ...@@ -135,8 +135,8 @@ private:
void *_ud; void *_ud;
public: public:
EventObj(): _em(NULL) { /* deferred to init() */ } EventObj(): _em(NULL) { /* deferred to init() */ }
bool init() { return pthread_mutex_init(&mutex, NULL) == 0; } bool init();
~EventObj() { pthread_mutex_destroy(&mutex); } ~EventObj();
void deliver(NPP browser); void deliver(NPP browser);
void callback(const libvlc_event_t*); void callback(const libvlc_event_t*);
...@@ -151,7 +151,9 @@ private: ...@@ -151,7 +151,9 @@ private:
lr_l _llist; lr_l _llist;
ev_l _elist; ev_l _elist;
#if defined(XP_UNIX)
pthread_mutex_t mutex; pthread_mutex_t mutex;
#endif
bool ask_for_event(event_t e); bool ask_for_event(event_t e);
void unask_for_event(event_t e); void unask_for_event(event_t e);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment