Commit cc59f655 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.
parent 8ca5f440
......@@ -36,7 +36,12 @@
#include "control/npolibvlc.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>
/*****************************************************************************
......@@ -88,14 +93,34 @@ static bool boolValue(const char *value) {
!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)
{
NPVariant result;
NPVariant params[1];
#if defined(XP_UNIX)
pthread_mutex_lock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
for( ev_l::iterator i=_elist.begin();i!=_elist.end();++i )
{
libvlc_event_type_t event = *i;
......@@ -114,8 +139,11 @@ void EventObj::deliver(NPP browser)
}
}
_elist.clear();
#if defined(XP_UNIX)
pthread_mutex_unlock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
}
void VlcPlugin::eventAsync(void *param)
......@@ -126,23 +154,29 @@ void VlcPlugin::eventAsync(void *param)
void EventObj::callback(const libvlc_event_t* event)
{
#if defined(XP_UNIX)
pthread_mutex_lock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
if( have_event(event->type) )
_elist.push_back(event->type);
#if defined(XP_UNIX)
pthread_mutex_unlock(&mutex);
#else
#warning "locking not implemented for this platform"
#endif
}
void VlcPlugin::event_callback(const libvlc_event_t* event, void *param)
{
VlcPlugin *plugin = (VlcPlugin*)param;
#ifdef XP_UNIX
#if defined(XP_UNIX)
plugin->events.callback(event);
NPN_PluginThreadAsyncCall(plugin->getBrowser(), eventAsync, plugin);
#else
#warning NPN_PluginThreadAsyncCall not implemented yet.
printf("%s","No NPN_PluginThreadAsyncCall(), doing nothing.");
printf("%s","No NPN_PluginThreadAsyncCall(), doing nothing.");
#endif
}
......
......@@ -135,8 +135,8 @@ private:
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*);
......@@ -151,7 +151,9 @@ private:
lr_l _llist;
ev_l _elist;
#if defined(XP_UNIX)
pthread_mutex_t mutex;
#endif
bool ask_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