Commit 90870f17 authored by JP Dinger's avatar JP Dinger Committed by Jean-Paul Saman

Push lots of copy/paste code into a macro, and en passant squash two small bugs.

Signed-off-by: Jean-Paul Saman's avatarJean-Paul Saman <jean-paul.saman@m2x.nl>
parent 3025ab83
...@@ -34,7 +34,17 @@ ...@@ -34,7 +34,17 @@
#include "vlcplugin.h" #include "vlcplugin.h"
#include "npolibvlc.h" #include "npolibvlc.h"
/*
** Local helper macros and function
*/
#define COUNTNAMES(a,b,c) const int a::b = sizeof(a::c)/sizeof(NPUTF8 *) #define COUNTNAMES(a,b,c) const int a::b = sizeof(a::c)/sizeof(NPUTF8 *)
#define RETURN_ON_EXCEPTION(ex) \
do { if( libvlc_exception_raised(&ex) ) \
{ \
NPN_SetException(this, libvlc_exception_get_message(&ex)); \
libvlc_exception_clear(&ex); \
return INVOKERESULT_GENERIC_ERROR; \
} } while(false)
/* /*
** implementation of libvlc root object ** implementation of libvlc root object
...@@ -233,24 +243,14 @@ LibvlcAudioNPObject::getProperty(int index, NPVariant &result) ...@@ -233,24 +243,14 @@ LibvlcAudioNPObject::getProperty(int index, NPVariant &result)
case ID_audio_mute: case ID_audio_mute:
{ {
bool muted = libvlc_audio_get_mute(p_plugin->getVLC(), &ex); bool muted = libvlc_audio_get_mute(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
BOOLEAN_TO_NPVARIANT(muted, result); BOOLEAN_TO_NPVARIANT(muted, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_audio_volume: case ID_audio_volume:
{ {
int volume = libvlc_audio_get_volume(p_plugin->getVLC(), &ex); int volume = libvlc_audio_get_volume(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(volume, result); INT32_TO_NPVARIANT(volume, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -258,32 +258,17 @@ LibvlcAudioNPObject::getProperty(int index, NPVariant &result) ...@@ -258,32 +258,17 @@ LibvlcAudioNPObject::getProperty(int index, NPVariant &result)
{ {
libvlc_media_player_t *p_md = libvlc_media_player_t *p_md =
libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex); libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
int track = libvlc_audio_get_track(p_md, &ex); int track = libvlc_audio_get_track(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(track, result); INT32_TO_NPVARIANT(track, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_audio_channel: case ID_audio_channel:
{ {
int channel = libvlc_audio_get_channel(p_plugin->getVLC(), &ex); int channel = libvlc_audio_get_channel(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(channel, result); INT32_TO_NPVARIANT(channel, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -311,12 +296,7 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value) ...@@ -311,12 +296,7 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value)
{ {
libvlc_audio_set_mute(p_plugin->getVLC(), libvlc_audio_set_mute(p_plugin->getVLC(),
NPVARIANT_TO_BOOLEAN(value), &ex); NPVARIANT_TO_BOOLEAN(value), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
return INVOKERESULT_INVALID_VALUE; return INVOKERESULT_INVALID_VALUE;
...@@ -325,12 +305,7 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value) ...@@ -325,12 +305,7 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value)
{ {
libvlc_audio_set_volume(p_plugin->getVLC(), libvlc_audio_set_volume(p_plugin->getVLC(),
numberValue(value), &ex); numberValue(value), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
return INVOKERESULT_INVALID_VALUE; return INVOKERESULT_INVALID_VALUE;
...@@ -339,21 +314,11 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value) ...@@ -339,21 +314,11 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value)
{ {
libvlc_media_player_t *p_md = libvlc_media_player_t *p_md =
libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex); libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
libvlc_audio_set_track(p_md, libvlc_audio_set_track(p_md,
numberValue(value), &ex); numberValue(value), &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
return INVOKERESULT_INVALID_VALUE; return INVOKERESULT_INVALID_VALUE;
...@@ -362,12 +327,7 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value) ...@@ -362,12 +327,7 @@ LibvlcAudioNPObject::setProperty(int index, const NPVariant &value)
{ {
libvlc_audio_set_channel(p_plugin->getVLC(), libvlc_audio_set_channel(p_plugin->getVLC(),
numberValue(value), &ex); numberValue(value), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
return INVOKERESULT_INVALID_VALUE; return INVOKERESULT_INVALID_VALUE;
...@@ -406,18 +366,10 @@ LibvlcAudioNPObject::invoke(int index, const NPVariant *args, ...@@ -406,18 +366,10 @@ LibvlcAudioNPObject::invoke(int index, const NPVariant *args,
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_audio_toggle_mute(p_plugin->getVLC(), &ex); libvlc_audio_toggle_mute(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
default: default:
; ;
...@@ -488,12 +440,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -488,12 +440,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
double val = (double)libvlc_media_player_get_length(p_md, &ex); double val = (double)libvlc_media_player_get_length(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
DOUBLE_TO_NPVARIANT(val, result); DOUBLE_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -501,12 +448,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -501,12 +448,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
double val = libvlc_media_player_get_position(p_md, &ex); double val = libvlc_media_player_get_position(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
DOUBLE_TO_NPVARIANT(val, result); DOUBLE_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -514,12 +456,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -514,12 +456,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
double val = (double)libvlc_media_player_get_time(p_md, &ex); double val = (double)libvlc_media_player_get_time(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
DOUBLE_TO_NPVARIANT(val, result); DOUBLE_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -527,12 +464,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -527,12 +464,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
int val = libvlc_media_player_get_state(p_md, &ex); int val = libvlc_media_player_get_state(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(val, result); INT32_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -540,12 +472,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -540,12 +472,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
float val = libvlc_media_player_get_rate(p_md, &ex); float val = libvlc_media_player_get_rate(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
DOUBLE_TO_NPVARIANT(val, result); DOUBLE_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -553,12 +480,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -553,12 +480,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
double val = libvlc_media_player_get_fps(p_md, &ex); double val = libvlc_media_player_get_fps(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
DOUBLE_TO_NPVARIANT(val, result); DOUBLE_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -566,12 +488,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result) ...@@ -566,12 +488,7 @@ LibvlcInputNPObject::getProperty(int index, NPVariant &result)
{ {
bool val = libvlc_media_player_has_vout(p_md, &ex); bool val = libvlc_media_player_has_vout(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
BOOLEAN_TO_NPVARIANT(val, result); BOOLEAN_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -595,12 +512,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value) ...@@ -595,12 +512,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value)
libvlc_media_player_t *p_md = libvlc_media_player_t *p_md =
libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex); libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
switch( index ) switch( index )
{ {
...@@ -615,12 +527,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value) ...@@ -615,12 +527,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value)
float val = (float)NPVARIANT_TO_DOUBLE(value); float val = (float)NPVARIANT_TO_DOUBLE(value);
libvlc_media_player_set_position(p_md, val, &ex); libvlc_media_player_set_position(p_md, val, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_input_time: case ID_input_time:
...@@ -638,12 +545,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value) ...@@ -638,12 +545,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value)
libvlc_media_player_set_time(p_md, val, &ex); libvlc_media_player_set_time(p_md, val, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_input_rate: case ID_input_rate:
...@@ -661,12 +563,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value) ...@@ -661,12 +563,7 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value)
libvlc_media_player_set_rate(p_md, val, &ex); libvlc_media_player_set_rate(p_md, val, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
default: default:
...@@ -861,12 +758,7 @@ LibvlcMessageIteratorNPObject::getProperty(int index, NPVariant &result) ...@@ -861,12 +758,7 @@ LibvlcMessageIteratorNPObject::getProperty(int index, NPVariant &result)
BOOLEAN_TO_NPVARIANT( BOOLEAN_TO_NPVARIANT(
libvlc_log_iterator_has_next(_p_iter, &ex), result ); libvlc_log_iterator_has_next(_p_iter, &ex), result );
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
} }
else else
{ {
...@@ -915,14 +807,8 @@ LibvlcMessageIteratorNPObject::invoke(int index, const NPVariant *args, ...@@ -915,14 +807,8 @@ LibvlcMessageIteratorNPObject::invoke(int index, const NPVariant *args,
buffer.sizeof_msg = sizeof(buffer); buffer.sizeof_msg = sizeof(buffer);
libvlc_log_iterator_next(_p_iter, &buffer, &ex); libvlc_log_iterator_next(_p_iter, &buffer, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
LibvlcMessageNPObject* message = LibvlcMessageNPObject* message =
static_cast<LibvlcMessageNPObject*>( static_cast<LibvlcMessageNPObject*>(
NPN_CreateObject(_instance, RuntimeNPClass< NPN_CreateObject(_instance, RuntimeNPClass<
...@@ -935,7 +821,6 @@ LibvlcMessageIteratorNPObject::invoke(int index, const NPVariant *args, ...@@ -935,7 +821,6 @@ LibvlcMessageIteratorNPObject::invoke(int index, const NPVariant *args,
} }
return INVOKERESULT_OUT_OF_MEMORY; return INVOKERESULT_OUT_OF_MEMORY;
} }
}
return INVOKERESULT_GENERIC_ERROR; return INVOKERESULT_GENERIC_ERROR;
} }
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
...@@ -979,12 +864,7 @@ LibvlcMessagesNPObject::getProperty(int index, NPVariant &result) ...@@ -979,12 +864,7 @@ LibvlcMessagesNPObject::getProperty(int index, NPVariant &result)
libvlc_exception_init(&ex); libvlc_exception_init(&ex);
INT32_TO_NPVARIANT(libvlc_log_count(p_log, &ex), result); INT32_TO_NPVARIANT(libvlc_log_count(p_log, &ex), result);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
} }
else else
{ {
...@@ -1032,12 +912,7 @@ LibvlcMessagesNPObject::invoke(int index, const NPVariant *args, ...@@ -1032,12 +912,7 @@ LibvlcMessagesNPObject::invoke(int index, const NPVariant *args,
if( p_log ) if( p_log )
{ {
libvlc_log_clear(p_log, &ex); libvlc_log_clear(p_log, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
} }
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1121,12 +996,7 @@ LibvlcLogNPObject::getProperty(int index, NPVariant &result) ...@@ -1121,12 +996,7 @@ LibvlcLogNPObject::getProperty(int index, NPVariant &result)
{ {
INT32_TO_NPVARIANT( libvlc_get_log_verbosity( INT32_TO_NPVARIANT( libvlc_get_log_verbosity(
p_plugin->getVLC(), &ex), result); p_plugin->getVLC(), &ex), result);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
} }
else else
{ {
...@@ -1165,33 +1035,18 @@ LibvlcLogNPObject::setProperty(int index, const NPVariant &value) ...@@ -1165,33 +1035,18 @@ LibvlcLogNPObject::setProperty(int index, const NPVariant &value)
if( !p_log ) if( !p_log )
{ {
p_log = libvlc_log_open(p_libvlc, &ex); p_log = libvlc_log_open(p_libvlc, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
p_plugin->setLog(p_log); p_plugin->setLog(p_log);
} }
libvlc_set_log_verbosity(p_libvlc, (unsigned)verbosity, &ex); libvlc_set_log_verbosity(p_libvlc, (unsigned)verbosity, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
} }
else if( p_log ) else if( p_log )
{ {
/* close log when verbosity is set to -1 */ /* close log when verbosity is set to -1 */
p_plugin->setLog(NULL); p_plugin->setLog(NULL);
libvlc_log_close(p_log, &ex); libvlc_log_close(p_log, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
} }
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1241,12 +1096,7 @@ LibvlcPlaylistItemsNPObject::getProperty(int index, NPVariant &result) ...@@ -1241,12 +1096,7 @@ LibvlcPlaylistItemsNPObject::getProperty(int index, NPVariant &result)
libvlc_playlist_lock(p_plugin->getVLC()); libvlc_playlist_lock(p_plugin->getVLC());
int val = libvlc_playlist_items_count(p_plugin->getVLC(), &ex); int val = libvlc_playlist_items_count(p_plugin->getVLC(), &ex);
libvlc_playlist_unlock(p_plugin->getVLC()); libvlc_playlist_unlock(p_plugin->getVLC());
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(val, result); INT32_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1287,36 +1137,20 @@ LibvlcPlaylistItemsNPObject::invoke(int index, const NPVariant *args, ...@@ -1287,36 +1137,20 @@ LibvlcPlaylistItemsNPObject::invoke(int index, const NPVariant *args,
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_clear(p_plugin->getVLC(), &ex); libvlc_playlist_clear(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlistitems_remove: case ID_playlistitems_remove:
if( (argCount == 1) && isNumberValue(args[0]) ) if( (argCount == 1) && isNumberValue(args[0]) )
{ {
libvlc_playlist_delete_item(p_plugin->getVLC(), libvlc_playlist_delete_item(p_plugin->getVLC(),
numberValue(args[0]), &ex); numberValue(args[0]), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
default: default:
; ;
...@@ -1370,12 +1204,7 @@ LibvlcPlaylistNPObject::getProperty(int index, NPVariant &result) ...@@ -1370,12 +1204,7 @@ LibvlcPlaylistNPObject::getProperty(int index, NPVariant &result)
libvlc_playlist_lock(p_plugin->getVLC()); libvlc_playlist_lock(p_plugin->getVLC());
int val = libvlc_playlist_items_count(p_plugin->getVLC(), &ex); int val = libvlc_playlist_items_count(p_plugin->getVLC(), &ex);
libvlc_playlist_unlock(p_plugin->getVLC()); libvlc_playlist_unlock(p_plugin->getVLC());
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(val, result); INT32_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1384,12 +1213,7 @@ LibvlcPlaylistNPObject::getProperty(int index, NPVariant &result) ...@@ -1384,12 +1213,7 @@ LibvlcPlaylistNPObject::getProperty(int index, NPVariant &result)
libvlc_playlist_lock(p_plugin->getVLC()); libvlc_playlist_lock(p_plugin->getVLC());
int val = libvlc_playlist_isplaying(p_plugin->getVLC(), &ex); int val = libvlc_playlist_isplaying(p_plugin->getVLC(), &ex);
libvlc_playlist_unlock(p_plugin->getVLC()); libvlc_playlist_unlock(p_plugin->getVLC());
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
BOOLEAN_TO_NPVARIANT(val, result); BOOLEAN_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1537,155 +1361,83 @@ LibvlcPlaylistNPObject::invoke(int index, const NPVariant *args, ...@@ -1537,155 +1361,83 @@ LibvlcPlaylistNPObject::invoke(int index, const NPVariant *args,
} }
free(ppsz_options); free(ppsz_options);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
INT32_TO_NPVARIANT(item, result); INT32_TO_NPVARIANT(item, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
case ID_playlist_play: case ID_playlist_play:
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_play(p_plugin->getVLC(), -1, 0, NULL, &ex); libvlc_playlist_play(p_plugin->getVLC(), -1, 0, NULL, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_playItem: case ID_playlist_playItem:
if( (argCount == 1) && isNumberValue(args[0]) ) if( (argCount == 1) && isNumberValue(args[0]) )
{ {
libvlc_playlist_play(p_plugin->getVLC(), libvlc_playlist_play(p_plugin->getVLC(),
numberValue(args[0]), 0, NULL, &ex); numberValue(args[0]), 0, NULL, &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_togglepause: case ID_playlist_togglepause:
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_pause(p_plugin->getVLC(), &ex); libvlc_playlist_pause(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_stop: case ID_playlist_stop:
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_stop(p_plugin->getVLC(), &ex); libvlc_playlist_stop(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_next: case ID_playlist_next:
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_next(p_plugin->getVLC(), &ex); libvlc_playlist_next(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_prev: case ID_playlist_prev:
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_prev(p_plugin->getVLC(), &ex); libvlc_playlist_prev(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_clear: /* deprecated */ case ID_playlist_clear: /* deprecated */
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_playlist_clear(p_plugin->getVLC(), &ex); libvlc_playlist_clear(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_playlist_removeitem: /* deprecated */ case ID_playlist_removeitem: /* deprecated */
if( (argCount == 1) && isNumberValue(args[0]) ) if( (argCount == 1) && isNumberValue(args[0]) )
{ {
libvlc_playlist_delete_item(p_plugin->getVLC(), libvlc_playlist_delete_item(p_plugin->getVLC(),
numberValue(args[0]), &ex); numberValue(args[0]), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
default: default:
; ;
...@@ -1862,12 +1614,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1862,12 +1614,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
libvlc_exception_init(&ex); libvlc_exception_init(&ex);
libvlc_media_player_t *p_md = libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex); libvlc_media_player_t *p_md = libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
switch( index ) switch( index )
{ {
...@@ -1875,12 +1622,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1875,12 +1622,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
int val = libvlc_get_fullscreen(p_md, &ex); int val = libvlc_get_fullscreen(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
BOOLEAN_TO_NPVARIANT(val, result); BOOLEAN_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1888,12 +1630,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1888,12 +1630,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
int val = libvlc_video_get_height(p_md, &ex); int val = libvlc_video_get_height(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(val, result); INT32_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1901,12 +1638,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1901,12 +1638,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
int val = libvlc_video_get_width(p_md, &ex); int val = libvlc_video_get_width(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(val, result); INT32_TO_NPVARIANT(val, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1914,12 +1646,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1914,12 +1646,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
NPUTF8 *psz_aspect = libvlc_video_get_aspect_ratio(p_md, &ex); NPUTF8 *psz_aspect = libvlc_video_get_aspect_ratio(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
if( !psz_aspect ) if( !psz_aspect )
return INVOKERESULT_GENERIC_ERROR; return INVOKERESULT_GENERIC_ERROR;
...@@ -1930,12 +1657,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1930,12 +1657,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
int i_spu = libvlc_video_get_spu(p_md, &ex); int i_spu = libvlc_video_get_spu(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(i_spu, result); INT32_TO_NPVARIANT(i_spu, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1943,12 +1665,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1943,12 +1665,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
NPUTF8 *psz_geometry = libvlc_video_get_crop_geometry(p_md, &ex); NPUTF8 *psz_geometry = libvlc_video_get_crop_geometry(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
if( !psz_geometry ) if( !psz_geometry )
return INVOKERESULT_GENERIC_ERROR; return INVOKERESULT_GENERIC_ERROR;
...@@ -1959,12 +1676,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result) ...@@ -1959,12 +1676,7 @@ LibvlcVideoNPObject::getProperty(int index, NPVariant &result)
{ {
int i_page = libvlc_video_get_teletext(p_md, &ex); int i_page = libvlc_video_get_teletext(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
INT32_TO_NPVARIANT(i_page, result); INT32_TO_NPVARIANT(i_page, result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
...@@ -1985,12 +1697,7 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value) ...@@ -1985,12 +1697,7 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)
libvlc_exception_init(&ex); libvlc_exception_init(&ex);
libvlc_media_player_t *p_md = libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex); libvlc_media_player_t *p_md = libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
switch( index ) switch( index )
{ {
...@@ -2006,12 +1713,7 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value) ...@@ -2006,12 +1713,7 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)
libvlc_set_fullscreen(p_md, val, &ex); libvlc_set_fullscreen(p_md, val, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_video_aspectratio: case ID_video_aspectratio:
...@@ -2034,13 +1736,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value) ...@@ -2034,13 +1736,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)
libvlc_video_set_aspect_ratio(p_md, psz_aspect, &ex); libvlc_video_set_aspect_ratio(p_md, psz_aspect, &ex);
free(psz_aspect); free(psz_aspect);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
RETURN_ON_EXCEPTION(ex);
if( libvlc_exception_raised(&ex) )
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_video_subtitle: case ID_video_subtitle:
...@@ -2050,12 +1747,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value) ...@@ -2050,12 +1747,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)
libvlc_video_set_spu(p_md, libvlc_video_set_spu(p_md,
numberValue(value), &ex); numberValue(value), &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
...@@ -2081,13 +1774,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value) ...@@ -2081,13 +1774,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)
libvlc_video_set_crop_geometry(p_md, psz_geometry, &ex); libvlc_video_set_crop_geometry(p_md, psz_geometry, &ex);
free(psz_geometry); free(psz_geometry);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
RETURN_ON_EXCEPTION(ex);
if( libvlc_exception_raised(&ex) )
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
case ID_video_teletext: case ID_video_teletext:
...@@ -2097,12 +1785,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value) ...@@ -2097,12 +1785,8 @@ LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)
libvlc_video_set_teletext(p_md, libvlc_video_set_teletext(p_md,
numberValue(value), &ex); numberValue(value), &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
...@@ -2139,12 +1823,7 @@ LibvlcVideoNPObject::invoke(int index, const NPVariant *args, ...@@ -2139,12 +1823,7 @@ LibvlcVideoNPObject::invoke(int index, const NPVariant *args,
libvlc_exception_init(&ex); libvlc_exception_init(&ex);
libvlc_media_player_t *p_md = libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex); libvlc_media_player_t *p_md = libvlc_playlist_get_media_player(p_plugin->getVLC(), &ex);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
switch( index ) switch( index )
{ {
...@@ -2153,56 +1832,20 @@ LibvlcVideoNPObject::invoke(int index, const NPVariant *args, ...@@ -2153,56 +1832,20 @@ LibvlcVideoNPObject::invoke(int index, const NPVariant *args,
{ {
libvlc_toggle_fullscreen(p_md, &ex); libvlc_toggle_fullscreen(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
else
{
/* cannot get md, probably not playing */
if( libvlc_exception_raised(&ex) )
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
}
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
case ID_video_toggleteletext: case ID_video_toggleteletext:
if( argCount == 0 ) if( argCount == 0 )
{ {
libvlc_toggle_teletext(p_md, &ex); libvlc_toggle_teletext(p_md, &ex);
libvlc_media_player_release(p_md); libvlc_media_player_release(p_md);
if( libvlc_exception_raised(&ex) ) RETURN_ON_EXCEPTION(ex);
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
else
{
VOID_TO_NPVARIANT(result); VOID_TO_NPVARIANT(result);
return INVOKERESULT_NO_ERROR; return INVOKERESULT_NO_ERROR;
} }
}
else
{
/* cannot get md, probably not playing */
if( libvlc_exception_raised(&ex) )
{
NPN_SetException(this, libvlc_exception_get_message(&ex));
libvlc_exception_clear(&ex);
}
return INVOKERESULT_GENERIC_ERROR;
}
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
default: default:
return INVOKERESULT_NO_SUCH_METHOD; return INVOKERESULT_NO_SUCH_METHOD;
......
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