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