Commit 4d89b290 authored by Jean-Paul Saman's avatar Jean-Paul Saman

activex: remove libvlc_exceptions and adapt to recent libvlc changes

The libvlc_exceptions have been removed from libvlc.
The libvlc audio functions prototypes have changed.
parent 2f58aad4
/*****************************************************************************
* plugin.cpp: ActiveX control for VLC
*****************************************************************************
* Copyright (C) 2006 the VideoLAN team
* Copyright (C) 2006-2010 the VideoLAN team
*
* Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
* Jean-Paul Saman <jpsaman@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -47,6 +48,7 @@
#include <servprov.h>
#include <shlwapi.h>
#include <wininet.h>
#include <assert.h>
using namespace std;
......@@ -418,7 +420,6 @@ HRESULT VLCPlugin::onLoad(void)
return S_OK;
};
void VLCPlugin::initVLC()
{
extern HMODULE DllGetModule();
......@@ -486,22 +487,12 @@ void VLCPlugin::initVLC()
if( _b_autoloop )
ppsz_argv[ppsz_argc++] = "--loop";
libvlc_exception_t ex;
libvlc_exception_init(&ex);
_p_libvlc = libvlc_new(ppsz_argc, ppsz_argv, &ex);
if( libvlc_exception_raised(&ex) )
_p_libvlc = libvlc_new(ppsz_argc, ppsz_argv);
if( !_p_libvlc )
return;
_p_mlist = libvlc_media_list_new(_p_libvlc);
// initial volume setting
libvlc_audio_set_volume(_p_libvlc, _i_volume, NULL);
if( _b_mute )
{
libvlc_audio_set_mute(_p_libvlc, TRUE);
}
// initial playlist item
if( SysStringLen(_bstr_mrl) > 0 )
{
......@@ -542,7 +533,7 @@ void VLCPlugin::initVLC()
options[i_options++] = timeBuffer;
}
// add default target to playlist
playlist_add_extended_untrusted(psz_mrl, i_options, options, NULL);
playlist_add_extended_untrusted(psz_mrl, i_options, options);
CoTaskMemFree(psz_mrl);
}
}
......@@ -668,8 +659,6 @@ BOOL VLCPlugin::isInPlaceActive(void)
HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprcPosRect, LPCRECT lprcClipRect)
{
RECT clipRect = *lprcClipRect;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
/*
** record keeping of control geometry within container
......@@ -714,9 +703,9 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
if( FAILED(result) )
return result;
if( _b_autoplay && playlist_select(0,NULL) )
if( _b_autoplay && playlist_select(0) )
{
libvlc_media_player_play(_p_mplayer,NULL);
libvlc_media_player_play(_p_mplayer);
fireOnPlayEvent();
}
}
......@@ -729,9 +718,9 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
HRESULT VLCPlugin::onInPlaceDeactivate(void)
{
if( isPlaying(NULL) )
if( isPlaying() )
{
playlist_stop(NULL);
playlist_stop();
fireOnStopEvent();
}
......@@ -769,7 +758,10 @@ void VLCPlugin::setVolume(int volume)
_i_volume = volume;
if( isRunning() )
{
libvlc_audio_set_volume(_p_libvlc, _i_volume, NULL);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
libvlc_audio_set_volume(p_md, _i_volume);
}
setDirty(TRUE);
}
......@@ -798,7 +790,7 @@ void VLCPlugin::setTime(int seconds)
setStartTime(_i_time);
if( NULL != _p_mplayer )
{
libvlc_media_player_set_time(_p_mplayer, _i_time, NULL);
libvlc_media_player_set_time(_p_mplayer, _i_time);
}
}
};
......@@ -1004,25 +996,24 @@ void VLCPlugin::fireOnStopEvent(void)
vlcConnectionPointContainer->fireEvent(DISPID_StopEvent, &dispparamsNoArgs);
};
bool VLCPlugin::playlist_select( int idx, libvlc_exception_t *ex )
bool VLCPlugin::playlist_select( int idx )
{
libvlc_media_t *p_m = NULL;
assert(_p_mlist);
libvlc_media_list_lock(_p_mlist);
int count = libvlc_media_list_count(_p_mlist);
if( libvlc_exception_raised(ex) )
goto bad_unlock;
if( idx<0||idx>=count )
if( (idx < 0) || (idx >= count) )
goto bad_unlock;
_i_midx = idx;
p_m = libvlc_media_list_item_at_index(_p_mlist,_i_midx,ex);
p_m = libvlc_media_list_item_at_index(_p_mlist,_i_midx);
libvlc_media_list_unlock(_p_mlist);
if( libvlc_exception_raised(ex) )
if( !p_m )
return false;
if( _p_mplayer )
......@@ -1031,37 +1022,42 @@ bool VLCPlugin::playlist_select( int idx, libvlc_exception_t *ex )
_p_mplayer = NULL;
}
_p_mplayer = libvlc_media_player_new_from_media(p_m,ex);
_p_mplayer = libvlc_media_player_new_from_media(p_m);
if( _p_mplayer )
set_player_window(ex);
{
// initial volume setting
libvlc_audio_set_volume(_p_mplayer, _i_volume);
if( _b_mute )
libvlc_audio_set_mute(_p_mplayer, TRUE);
set_player_window();
}
libvlc_media_release( p_m );
return !libvlc_exception_raised(ex);
libvlc_media_release(p_m);
return _p_mplayer ? true : false;
bad_unlock:
libvlc_media_list_unlock(_p_mlist);
return false;
}
void VLCPlugin::set_player_window(libvlc_exception_t *ex)
void VLCPlugin::set_player_window()
{
// XXX FIXME no idea if this is correct or not
libvlc_media_player_set_hwnd(_p_mplayer,getInPlaceWindow());
}
int VLCPlugin::playlist_add_extended_untrusted(const char *mrl, int optc, const char **optv, libvlc_exception_t *ex)
int VLCPlugin::playlist_add_extended_untrusted(const char *mrl, int optc, const char **optv)
{
int item = -1;
libvlc_media_t *p_m = libvlc_media_new(_p_libvlc,mrl,ex);
if( libvlc_exception_raised(ex) )
libvlc_media_t *p_m = libvlc_media_new(_p_libvlc,mrl);
if( !p_m )
return -1;
for( int i = 0; i < optc; ++i )
libvlc_media_add_option_flag(p_m, optv[i], libvlc_media_option_unique);
libvlc_media_list_lock(_p_mlist);
libvlc_media_list_add_media(_p_mlist,p_m,ex);
if( !libvlc_exception_raised(ex) )
if( libvlc_media_list_add_media(_p_mlist,p_m) == 0 )
item = libvlc_media_list_count(_p_mlist)-1;
libvlc_media_list_unlock(_p_mlist);
libvlc_media_release(p_m);
......
/*****************************************************************************
* plugin.h: ActiveX control for VLC
*****************************************************************************
* Copyright (C) 2005 the VideoLAN team
* Copyright (C) 2005-2010 the VideoLAN team
*
* Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
* Jean-Paul Saman <jpsaman@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -199,12 +200,12 @@ public:
if( !isRunning() )
initVLC();
*pp_libvlc = _p_libvlc;
return _p_libvlc?S_OK:E_FAIL;
return _p_libvlc ? S_OK : E_FAIL;
}
HRESULT getMD(libvlc_media_player_t **pp_md)
{
*pp_md = _p_mplayer;
return _p_mplayer?S_OK:E_FAIL;
return _p_mplayer ? S_OK : E_FAIL;
}
void setErrorInfo(REFIID riid, const char *description);
......@@ -243,18 +244,18 @@ public:
/*
** libvlc interface
*/
bool isPlaying(libvlc_exception_t *ex)
bool isPlaying()
{
return _p_mplayer && libvlc_media_player_is_playing(_p_mplayer);
}
int playlist_get_current_index(libvlc_exception_t *) { return _i_midx; }
int playlist_add_extended_untrusted(const char *, int, const char **, libvlc_exception_t *);
void playlist_delete_item(int idx, libvlc_exception_t *ex)
int playlist_get_current_index() { return _i_midx; }
int playlist_add_extended_untrusted(const char *, int, const char **);
void playlist_delete_item(int idx)
{
if( _p_mlist )
libvlc_media_list_remove_index(_p_mlist,idx,ex);
libvlc_media_list_remove_index(_p_mlist,idx);
}
void playlist_clear(libvlc_exception_t *ex)
void playlist_clear()
{
if( !_p_libvlc )
return;
......@@ -262,7 +263,7 @@ public:
libvlc_media_list_release(_p_mlist);
_p_mlist = libvlc_media_list_new(_p_libvlc);
}
int playlist_count(libvlc_exception_t *ex)
int playlist_count()
{
int r = 0;
if( !_p_mlist )
......@@ -272,39 +273,39 @@ public:
libvlc_media_list_unlock(_p_mlist);
return r;
}
void playlist_pause(libvlc_exception_t *ex)
void playlist_pause()
{
if( isPlaying(ex) )
libvlc_media_player_pause(_p_mplayer,ex);
if( isPlaying() )
libvlc_media_player_pause(_p_mplayer);
}
void playlist_play(libvlc_exception_t *ex)
void playlist_play()
{
if( !_p_libvlc )
initVLC();
if( _p_mplayer||playlist_select(0,ex) )
libvlc_media_player_play(_p_mplayer,ex);
if( _p_mplayer || playlist_select(0) )
libvlc_media_player_play(_p_mplayer);
}
void playlist_play_item(int idx,libvlc_exception_t *ex)
void playlist_play_item(int idx)
{
if( !_p_libvlc )
initVLC();
if( playlist_select(idx,ex) )
libvlc_media_player_play(_p_mplayer,ex);
if( playlist_select(idx) )
libvlc_media_player_play(_p_mplayer);
}
void playlist_stop(libvlc_exception_t *ex)
void playlist_stop()
{
if( _p_mplayer )
libvlc_media_player_stop(_p_mplayer);
}
void playlist_next(libvlc_exception_t *ex)
void playlist_next()
{
if( playlist_select( _i_midx+1, ex) )
libvlc_media_player_play(_p_mplayer,ex);
if( playlist_select( _i_midx+1 ) )
libvlc_media_player_play(_p_mplayer);
}
void playlist_prev(libvlc_exception_t *ex)
void playlist_prev()
{
if( playlist_select( _i_midx-1, ex) )
libvlc_media_player_play(_p_mplayer,ex);
if( playlist_select( _i_midx-1 ) )
libvlc_media_player_play(_p_mplayer);
}
protected:
......@@ -313,8 +314,8 @@ protected:
private:
void initVLC();
bool playlist_select(int i,libvlc_exception_t *);
void set_player_window(libvlc_exception_t *);
bool playlist_select(int i);
void set_player_window();
//implemented interfaces
class VLCOleObject *vlcOleObject;
......
/*****************************************************************************
* vlccontrol.cpp: ActiveX control for VLC
*****************************************************************************
* Copyright (C) 2005 the VideoLAN team
* Copyright (C) 2005-2010 the VideoLAN team
*
* Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
* Jean-Paul Saman <jpsaman@videolan.org>
......@@ -112,26 +112,21 @@ STDMETHODIMP VLCControl::get_Visible(VARIANT_BOOL *isVisible)
*isVisible = _p_instance->getVisible() ? VARIANT_TRUE : VARIANT_FALSE;
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl::put_Visible(VARIANT_BOOL isVisible)
{
_p_instance->setVisible(isVisible != VARIANT_FALSE);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl::play(void)
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
_p_instance->playlist_play(&ex);
HRESULT result = exception_bridge(&ex);
if( SUCCEEDED(result) )
_p_instance->fireOnPlayEvent();
return result;
_p_instance->playlist_play();
_p_instance->fireOnPlayEvent();
return S_OK;
};
STDMETHODIMP VLCControl::pause(void)
......@@ -140,13 +135,8 @@ STDMETHODIMP VLCControl::pause(void)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_pause(p_md, &ex);
result = exception_bridge(&ex);
if( SUCCEEDED(result) )
_p_instance->fireOnPauseEvent();
libvlc_media_player_pause(p_md);
_p_instance->fireOnPauseEvent();
}
return result;
};
......@@ -157,13 +147,8 @@ STDMETHODIMP VLCControl::stop(void)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_stop(p_md);
result = exception_bridge(&ex);
if( SUCCEEDED(result) )
_p_instance->fireOnStopEvent();
_p_instance->fireOnStopEvent();
}
return result;
};
......@@ -193,11 +178,7 @@ STDMETHODIMP VLCControl::get_Position(float *position)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*position = libvlc_media_player_get_position(p_md, &ex);
result = exception_bridge(&ex);
*position = libvlc_media_player_get_position(p_md);
}
return result;
};
......@@ -208,11 +189,7 @@ STDMETHODIMP VLCControl::put_Position(float position)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_set_position(p_md, position, &ex);
result = exception_bridge(&ex);
libvlc_media_player_set_position(p_md, position);
}
return result;
};
......@@ -227,11 +204,7 @@ STDMETHODIMP VLCControl::get_Time(int *seconds)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*seconds = libvlc_media_player_get_time(p_md, &ex);
result = exception_bridge(&ex);
*seconds = libvlc_media_player_get_time(p_md);
}
return result;
};
......@@ -240,7 +213,7 @@ STDMETHODIMP VLCControl::put_Time(int seconds)
{
/* setTime function of the plugin sets the time. */
_p_instance->setTime(seconds);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl::shuttle(int seconds)
......@@ -249,12 +222,8 @@ STDMETHODIMP VLCControl::shuttle(int seconds)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
if( seconds < 0 ) seconds = 0;
libvlc_media_player_set_time(p_md, (int64_t)seconds, &ex);
result = exception_bridge(&ex);
libvlc_media_player_set_time(p_md, (int64_t)seconds);
}
return result;
......@@ -268,7 +237,7 @@ STDMETHODIMP VLCControl::fullscreen(void)
{
if( libvlc_media_player_is_playing(p_md) )
{
libvlc_toggle_fullscreen(p_md, NULL);
libvlc_toggle_fullscreen(p_md);
}
}
return result;
......@@ -284,11 +253,7 @@ STDMETHODIMP VLCControl::get_Length(int *seconds)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*seconds = (double)libvlc_media_player_get_length(p_md, &ex);
result = exception_bridge(&ex);
*seconds = (double)libvlc_media_player_get_length(p_md);
}
return result;
......@@ -303,11 +268,7 @@ STDMETHODIMP VLCControl::playFaster(void)
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_set_rate(p_md, rate, &ex);
result = exception_bridge(&ex);
libvlc_media_player_set_rate(p_md, rate);
}
return result;
};
......@@ -320,11 +281,7 @@ STDMETHODIMP VLCControl::playSlower(void)
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_set_rate(p_md, rate, &ex);
result = exception_bridge(&ex);
libvlc_media_player_set_rate(p_md, rate);
}
return result;
};
......@@ -335,21 +292,21 @@ STDMETHODIMP VLCControl::get_Volume(int *volume)
return E_POINTER;
*volume = _p_instance->getVolume();
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl::put_Volume(int volume)
{
_p_instance->setVolume(volume);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl::toggleMute(void)
{
libvlc_instance_t* p_libvlc;
HRESULT result = _p_instance->getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT result = _p_instance->getMD(&p_md);
if( SUCCEEDED(result) )
libvlc_audio_toggle_mute(p_libvlc);
libvlc_audio_toggle_mute(p_md);
return result;
};
......@@ -717,17 +674,13 @@ STDMETHODIMP VLCControl::addTarget(BSTR uri, VARIANT options, enum VLCPlaylistMo
if( FAILED(CreateTargetOptions(CP_UTF8, &options, &cOptions, &cOptionsCount)) )
return E_INVALIDARG;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
position = _p_instance->playlist_add_extended_untrusted(cUri,
cOptionsCount, const_cast<const char**>(cOptions), &ex);
cOptionsCount, const_cast<const char**>(cOptions));
FreeTargetOptions(cOptions, cOptionsCount);
CoTaskMemFree(cUri);
hr = exception_bridge(&ex);
if( SUCCEEDED(hr) )
if( position >= 0 )
{
if( mode & VLCPlayListAppendAndGo )
_p_instance->fireOnPlayEvent();
......@@ -751,11 +704,7 @@ STDMETHODIMP VLCControl::get_PlaylistIndex(int *index)
HRESULT result = _p_instance->getVLC(&p_libvlc);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*index = _p_instance->playlist_get_current_index(&ex);
result = exception_bridge(&ex);
*index = _p_instance->playlist_get_current_index();
}
return result;
};
......@@ -765,11 +714,8 @@ STDMETHODIMP VLCControl::get_PlaylistCount(int *count)
if( NULL == count )
return E_POINTER;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*count = _p_instance->playlist_count(&ex);
return exception_bridge(&ex);
*count = _p_instance->playlist_count();
return S_OK;
};
STDMETHODIMP VLCControl::playlistNext(void)
......@@ -778,11 +724,7 @@ STDMETHODIMP VLCControl::playlistNext(void)
HRESULT result = _p_instance->getVLC(&p_libvlc);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
_p_instance->playlist_next(&ex);
result = exception_bridge(&ex);
_p_instance->playlist_next();
}
return result;
};
......@@ -793,11 +735,7 @@ STDMETHODIMP VLCControl::playlistPrev(void)
HRESULT result = _p_instance->getVLC(&p_libvlc);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
_p_instance->playlist_prev(&ex);
result = exception_bridge(&ex);
_p_instance->playlist_prev();
}
return result;
};
......@@ -808,11 +746,7 @@ STDMETHODIMP VLCControl::playlistClear(void)
HRESULT result = _p_instance->getVLC(&p_libvlc);
if( SUCCEEDED(result) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
_p_instance->playlist_clear(&ex);
result = exception_bridge(&ex);
_p_instance->playlist_clear();
}
return result;
};
......@@ -839,7 +773,7 @@ STDMETHODIMP VLCControl::get_MRL(BSTR *mrl)
*mrl = SysAllocStringLen(_p_instance->getMRL(),
SysStringLen(_p_instance->getMRL()));
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl::put_MRL(BSTR mrl)
......
/*****************************************************************************
* vlccontrol.h: ActiveX control for VLC
*****************************************************************************
* Copyright (C) 2005 the VideoLAN team
* Copyright (C) 2005-2010 the VideoLAN team
*
* Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
*
......@@ -101,14 +101,6 @@ public:
private:
HRESULT getTypeInfo();
HRESULT exception_bridge(libvlc_exception_t *ex)
{
if( ! libvlc_exception_raised(ex) )
return NOERROR;
_p_instance->setErrorInfo(IID_IVLCControl, libvlc_errmsg());
libvlc_exception_clear(ex);
return E_FAIL;
}
VLCPlugin *_p_instance;
ITypeInfo *_p_typeinfo;
......
......@@ -36,13 +36,6 @@
// ---------
HRESULT VLCInterfaceBase::report_exception(REFIID riid, libvlc_exception_t *ex)
{
_plug->setErrorInfo(riid,libvlc_errmsg());
libvlc_exception_clear(ex);
return E_FAIL;
}
HRESULT VLCInterfaceBase::loadTypeInfo(REFIID riid)
{
// if( _ti ) return NOERROR; // unnecessairy
......@@ -98,19 +91,19 @@ STDMETHODIMP VLCAudio::get_mute(VARIANT_BOOL* mute)
if( NULL == mute )
return E_POINTER;
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
*mute = varbool( libvlc_audio_get_mute(p_libvlc) );
*mute = varbool( libvlc_audio_get_mute(p_md) );
return hr;
};
STDMETHODIMP VLCAudio::put_mute(VARIANT_BOOL mute)
{
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
libvlc_audio_set_mute(p_libvlc, VARIANT_FALSE != mute);
libvlc_audio_set_mute(p_md, VARIANT_FALSE != mute);
return hr;
};
......@@ -119,24 +112,20 @@ STDMETHODIMP VLCAudio::get_volume(long* volume)
if( NULL == volume )
return E_POINTER;
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
*volume = libvlc_audio_get_volume(p_libvlc);
*volume = libvlc_audio_get_volume(p_md);
return hr;
};
STDMETHODIMP VLCAudio::put_volume(long volume)
{
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_audio_set_volume(p_libvlc, volume, &ex);
hr = exception_bridge(&ex);
libvlc_audio_set_volume(p_md, volume);
}
return hr;
};
......@@ -150,11 +139,7 @@ STDMETHODIMP VLCAudio::get_track(long* track)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*track = libvlc_audio_get_track(p_md, &ex);
hr = exception_bridge(&ex);
*track = libvlc_audio_get_track(p_md);
}
return hr;
};
......@@ -165,11 +150,7 @@ STDMETHODIMP VLCAudio::put_track(long track)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_audio_set_track(p_md, track, &ex);
hr = exception_bridge(&ex);
libvlc_audio_set_track(p_md, track);
}
return hr;
};
......@@ -183,11 +164,8 @@ STDMETHODIMP VLCAudio::get_count(long* trackNumber)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
// get the number of audio track available and return it
*trackNumber = libvlc_audio_get_track_count(p_md, &ex);
hr = exception_bridge(&ex);
*trackNumber = libvlc_audio_get_track_count(p_md);
}
return hr;
};
......@@ -199,8 +177,6 @@ STDMETHODIMP VLCAudio::description(long trackID, BSTR* name)
return E_POINTER;
libvlc_media_player_t* p_md;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
......@@ -210,16 +186,14 @@ STDMETHODIMP VLCAudio::description(long trackID, BSTR* name)
libvlc_track_description_t *p_trackDesc;
// get tracks description
p_trackDesc = libvlc_audio_get_track_description(p_md, &ex);
hr = exception_bridge(&ex);
if( FAILED(hr) )
return hr;
p_trackDesc = libvlc_audio_get_track_description(p_md);
if( !p_trackDesc )
return E_FAIL;
//get the number of available track
i_limit = libvlc_audio_get_track_count(p_md, &ex);
hr = exception_bridge(&ex);
if( FAILED(hr) )
return hr;
i_limit = libvlc_audio_get_track_count(p_md);
if( i_limit < 0 )
return E_FAIL;
// check if the number given is a good one
if ( ( trackID > ( i_limit -1 ) ) || ( trackID < 0 ) )
......@@ -250,40 +224,32 @@ STDMETHODIMP VLCAudio::get_channel(long *channel)
if( NULL == channel )
return E_POINTER;
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*channel = libvlc_audio_get_channel(p_libvlc, &ex);
hr = exception_bridge(&ex);
*channel = libvlc_audio_get_channel(p_md);
}
return hr;
};
STDMETHODIMP VLCAudio::put_channel(long channel)
{
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_audio_set_channel(p_libvlc, channel, &ex);
hr = exception_bridge(&ex);
libvlc_audio_set_channel(p_md, channel);
}
return hr;
};
STDMETHODIMP VLCAudio::toggleMute()
{
libvlc_instance_t* p_libvlc;
HRESULT hr = getVLC(&p_libvlc);
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
libvlc_audio_toggle_mute(p_libvlc);
libvlc_audio_toggle_mute(p_md);
return hr;
};
......@@ -295,11 +261,7 @@ STDMETHODIMP VLCDeinterlace::disable()
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_deinterlace(p_md, 0, "", &ex);
hr = exception_bridge(&ex);
libvlc_video_set_deinterlace(p_md, "");
}
return hr;
}
......@@ -310,12 +272,9 @@ STDMETHODIMP VLCDeinterlace::enable(BSTR mode)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_mode = CStrFromBSTR(CP_UTF8, mode);
libvlc_video_set_deinterlace(p_md, 1, psz_mode, &ex);
libvlc_video_set_deinterlace(p_md, psz_mode);
CoTaskMemFree(psz_mode);
hr = exception_bridge(&ex);
}
return hr;
}
......@@ -332,11 +291,7 @@ STDMETHODIMP VLCInput::get_length(double* length)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*length = (double)libvlc_media_player_get_length(p_md, &ex);
hr = exception_bridge(&ex);
*length = (double)libvlc_media_player_get_length(p_md);
}
return hr;
};
......@@ -351,11 +306,7 @@ STDMETHODIMP VLCInput::get_position(double* position)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*position = libvlc_media_player_get_position(p_md, &ex);
hr = exception_bridge(&ex);
*position = libvlc_media_player_get_position(p_md);
}
return hr;
};
......@@ -366,11 +317,7 @@ STDMETHODIMP VLCInput::put_position(double position)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_set_position(p_md, position, &ex);
hr = exception_bridge(&ex);
libvlc_media_player_set_position(p_md, position);
}
return hr;
};
......@@ -384,11 +331,7 @@ STDMETHODIMP VLCInput::get_time(double* time)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*time = (double)libvlc_media_player_get_time(p_md, &ex);
hr = exception_bridge(&ex);
*time = (double)libvlc_media_player_get_time(p_md);
}
return hr;
};
......@@ -399,11 +342,7 @@ STDMETHODIMP VLCInput::put_time(double time)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_set_time(p_md, (int64_t)time, &ex);
hr = exception_bridge(&ex);
libvlc_media_player_set_time(p_md, (int64_t)time);
}
return hr;
};
......@@ -417,16 +356,7 @@ STDMETHODIMP VLCInput::get_state(long* state)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*state = libvlc_media_player_get_state(p_md);
if( libvlc_exception_raised(&ex) )
{
// don't fail, just return the idle state
*state = 0;
libvlc_exception_clear(&ex);
}
}
return hr;
};
......@@ -440,11 +370,7 @@ STDMETHODIMP VLCInput::get_rate(double* rate)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*rate = libvlc_media_player_get_rate(p_md, &ex);
hr = exception_bridge(&ex);
*rate = libvlc_media_player_get_rate(p_md);
}
return hr;
};
......@@ -455,11 +381,7 @@ STDMETHODIMP VLCInput::put_rate(double rate)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_set_rate(p_md, rate, &ex);
hr = exception_bridge(&ex);
libvlc_media_player_set_rate(p_md, rate);
}
return hr;
};
......@@ -474,11 +396,7 @@ STDMETHODIMP VLCInput::get_fps(double* fps)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*fps = libvlc_media_player_get_fps(p_md, &ex);
hr = exception_bridge(&ex);
*fps = libvlc_media_player_get_fps(p_md);
}
return hr;
};
......@@ -492,11 +410,7 @@ STDMETHODIMP VLCInput::get_hasVout(VARIANT_BOOL* hasVout)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*hasVout = varbool( libvlc_media_player_has_vout(p_md, &ex) );
hr = exception_bridge(&ex);
*hasVout = varbool( libvlc_media_player_has_vout(p_md) );
}
return hr;
};
......@@ -509,10 +423,7 @@ HRESULT VLCMarquee::do_put_int(unsigned idx, LONG val)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_marquee_int(p_md, idx, val, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_marquee_int(p_md, idx, val);
}
return hr;
}
......@@ -526,10 +437,7 @@ HRESULT VLCMarquee::do_get_int(unsigned idx, LONG *val)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*val = libvlc_video_get_marquee_int(p_md, idx, &ex);
hr = exception_bridge(&ex);
*val = libvlc_video_get_marquee_int(p_md, idx);
}
return hr;
}
......@@ -541,7 +449,6 @@ STDMETHODIMP VLCMarquee::get_position(BSTR* val)
LONG i;
HRESULT hr = do_get_int(libvlc_marquee_Position, &i);
if(SUCCEEDED(hr))
*val = BSTRFromCStr(CP_UTF8, position_bynumber(i));
......@@ -574,13 +481,8 @@ STDMETHODIMP VLCMarquee::get_text(BSTR *val)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
psz = libvlc_video_get_marquee_string(p_md, libvlc_marquee_Text, &ex);
hr = exception_bridge(&ex);
if(SUCCEEDED(hr))
psz = libvlc_video_get_marquee_string(p_md, libvlc_marquee_Text);
if( psz )
*val = BSTRFromCStr(CP_UTF8, psz);
}
return hr;
......@@ -592,13 +494,8 @@ STDMETHODIMP VLCMarquee::put_text(BSTR val)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_text = CStrFromBSTR(CP_UTF8, val);
libvlc_video_set_marquee_string(p_md, libvlc_marquee_Text,
psz_text, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_marquee_string(p_md, libvlc_marquee_Text, psz_text);
CoTaskMemFree(psz_text);
}
return hr;
......@@ -611,20 +508,14 @@ STDMETHODIMP VLCPlaylistItems::get_count(long* count)
if( NULL == count )
return E_POINTER;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*count = Instance()->playlist_count(&ex);
return exception_bridge(&ex);
*count = Instance()->playlist_count();
return S_OK;
};
STDMETHODIMP VLCPlaylistItems::clear()
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_clear(&ex);
return exception_bridge(&ex);
Instance()->playlist_clear();
return S_OK;
};
STDMETHODIMP VLCPlaylistItems::remove(long item)
......@@ -633,11 +524,7 @@ STDMETHODIMP VLCPlaylistItems::remove(long item)
HRESULT hr = getVLC(&p_libvlc);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_delete_item(item, &ex);
hr = exception_bridge(&ex);
Instance()->playlist_delete_item(item);
}
return hr;
};
......@@ -650,11 +537,8 @@ STDMETHODIMP VLCPlaylist::get_itemCount(long* count)
return E_POINTER;
*count = 0;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*count = Instance()->playlist_count(&ex);
return exception_bridge(&ex);
*count = Instance()->playlist_count();
return S_OK;
};
STDMETHODIMP VLCPlaylist::get_isPlaying(VARIANT_BOOL* isPlaying)
......@@ -666,11 +550,7 @@ STDMETHODIMP VLCPlaylist::get_isPlaying(VARIANT_BOOL* isPlaying)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*isPlaying = varbool( libvlc_media_player_is_playing(p_md) );
libvlc_exception_clear(&ex);
}
return hr;
};
......@@ -687,9 +567,6 @@ STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* ite
HRESULT hr = getVLC(&p_libvlc);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_uri = NULL;
if( SysStringLen(Instance()->getBaseURL()) > 0 )
{
......@@ -742,33 +619,26 @@ STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* ite
}
*item = Instance()->playlist_add_extended_untrusted(psz_uri,
i_options, const_cast<const char **>(ppsz_options), &ex);
i_options, const_cast<const char **>(ppsz_options));
VLCControl::FreeTargetOptions(ppsz_options, i_options);
CoTaskMemFree(psz_uri);
if( psz_name ) /* XXX Do we even need to check? */
CoTaskMemFree(psz_name);
hr = exception_bridge(&ex);
}
return hr;
};
STDMETHODIMP VLCPlaylist::play()
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_play(&ex);
return exception_bridge(&ex);
Instance()->playlist_play();
return S_OK;
};
STDMETHODIMP VLCPlaylist::playItem(long item)
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_play_item(item,&ex);
return exception_bridge(&ex);;
Instance()->playlist_play_item(item);
return S_OK;
};
STDMETHODIMP VLCPlaylist::togglePause()
......@@ -777,11 +647,7 @@ STDMETHODIMP VLCPlaylist::togglePause()
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_pause(p_md, &ex);
hr = exception_bridge(&ex);;
libvlc_media_player_pause(p_md);
}
return hr;
};
......@@ -792,40 +658,27 @@ STDMETHODIMP VLCPlaylist::stop()
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_media_player_stop(p_md);
hr = exception_bridge(&ex);;
}
return hr;
};
STDMETHODIMP VLCPlaylist::next()
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_next(&ex);
return exception_bridge(&ex);;
Instance()->playlist_next();
return S_OK;
};
STDMETHODIMP VLCPlaylist::prev()
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_prev(&ex);
return exception_bridge(&ex);;
Instance()->playlist_prev();
return S_OK;
};
STDMETHODIMP VLCPlaylist::clear()
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_clear(&ex);
return exception_bridge(&ex);;
Instance()->playlist_clear();
return S_OK;
};
STDMETHODIMP VLCPlaylist::removeItem(long item)
......@@ -834,11 +687,7 @@ STDMETHODIMP VLCPlaylist::removeItem(long item)
HRESULT hr = getVLC(&p_libvlc);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
Instance()->playlist_delete_item(item, &ex);
hr = exception_bridge(&ex);;
Instance()->playlist_delete_item(item);
}
return hr;
};
......@@ -868,11 +717,7 @@ STDMETHODIMP VLCSubtitle::get_track(long* spu)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*spu = libvlc_video_get_spu(p_md, &ex);
hr = exception_bridge(&ex);
*spu = libvlc_video_get_spu(p_md);
}
return hr;
};
......@@ -883,11 +728,7 @@ STDMETHODIMP VLCSubtitle::put_track(long spu)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_spu(p_md, spu, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_spu(p_md, spu);
}
return hr;
};
......@@ -901,11 +742,8 @@ STDMETHODIMP VLCSubtitle::get_count(long* spuNumber)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
// get the number of video subtitle available and return it
*spuNumber = libvlc_video_get_spu_count(p_md, &ex);
hr = exception_bridge(&ex);
*spuNumber = libvlc_video_get_spu_count(p_md);
}
return hr;
};
......@@ -917,8 +755,6 @@ STDMETHODIMP VLCSubtitle::description(long nameID, BSTR* name)
return E_POINTER;
libvlc_media_player_t* p_md;
libvlc_exception_t ex;
libvlc_exception_init(&ex);
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
......@@ -928,16 +764,14 @@ STDMETHODIMP VLCSubtitle::description(long nameID, BSTR* name)
libvlc_track_description_t *p_spuDesc;
// get subtitles description
p_spuDesc = libvlc_video_get_spu_description(p_md, &ex);
hr = exception_bridge(&ex);
if( FAILED(hr) )
return hr;
p_spuDesc = libvlc_video_get_spu_description(p_md);
if( !p_spuDesc )
return E_FAIL;
// get the number of available subtitle
i_limit = libvlc_video_get_spu_count(p_md, &ex);
hr = exception_bridge(&ex);
if( FAILED(hr) )
return hr;
i_limit = libvlc_video_get_spu_count(p_md);
if( i_limit < 0 )
return E_FAIL;
// check if the number given is a good one
if ( ( nameID > ( i_limit -1 ) ) || ( nameID < 0 ) )
......@@ -974,11 +808,7 @@ STDMETHODIMP VLCVideo::get_fullscreen(VARIANT_BOOL* fullscreen)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*fullscreen = varbool( libvlc_get_fullscreen(p_md, &ex) );
hr = exception_bridge(&ex);
*fullscreen = varbool( libvlc_get_fullscreen(p_md) );
}
return hr;
};
......@@ -989,11 +819,7 @@ STDMETHODIMP VLCVideo::put_fullscreen(VARIANT_BOOL fullscreen)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_set_fullscreen(p_md, VARIANT_FALSE != fullscreen, &ex);
hr = exception_bridge(&ex);
libvlc_set_fullscreen(p_md, VARIANT_FALSE != fullscreen);
}
return hr;
};
......@@ -1007,11 +833,7 @@ STDMETHODIMP VLCVideo::get_width(long* width)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*width = libvlc_video_get_width(p_md, &ex);
hr = exception_bridge(&ex);
*width = libvlc_video_get_width(p_md);
}
return hr;
};
......@@ -1025,11 +847,7 @@ STDMETHODIMP VLCVideo::get_height(long* height)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*height = libvlc_video_get_height(p_md, &ex);
hr = exception_bridge(&ex);
*height = libvlc_video_get_height(p_md);
}
return hr;
};
......@@ -1043,18 +861,15 @@ STDMETHODIMP VLCVideo::get_aspectRatio(BSTR* aspect)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_aspect = libvlc_video_get_aspect_ratio(p_md);
char *psz_aspect = libvlc_video_get_aspect_ratio(p_md, &ex);
hr = exception_bridge(&ex);
if( SUCCEEDED(hr) && NULL != psz_aspect )
if( !psz_aspect )
{
*aspect = BSTRFromCStr(CP_UTF8, psz_aspect);
if( NULL == *aspect )
hr = E_OUTOFMEMORY;
} else if( NULL == psz_aspect) hr = E_OUTOFMEMORY; // strdup("") failed
} else if( NULL == psz_aspect)
hr = E_OUTOFMEMORY;
free( psz_aspect );
}
return hr;
......@@ -1069,19 +884,15 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_aspect = CStrFromBSTR(CP_UTF8, aspect);
if( NULL == psz_aspect )
if( !psz_aspect )
{
return E_OUTOFMEMORY;
}
libvlc_video_set_aspect_ratio(p_md, psz_aspect, &ex);
libvlc_video_set_aspect_ratio(p_md, psz_aspect);
CoTaskMemFree(psz_aspect);
hr = exception_bridge(&ex);
}
return hr;
};
......@@ -1095,11 +906,7 @@ STDMETHODIMP VLCVideo::get_subtitle(long* spu)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*spu = libvlc_video_get_spu(p_md, &ex);
hr = exception_bridge(&ex);
*spu = libvlc_video_get_spu(p_md);
}
return hr;
};
......@@ -1110,11 +917,7 @@ STDMETHODIMP VLCVideo::put_subtitle(long spu)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_spu(p_md, spu, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_spu(p_md, spu);
}
return hr;
};
......@@ -1128,17 +931,14 @@ STDMETHODIMP VLCVideo::get_crop(BSTR* geometry)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_geometry = libvlc_video_get_crop_geometry(p_md, &ex);
hr = exception_bridge(&ex);
if( SUCCEEDED(&ex) && NULL != psz_geometry )
char *psz_geometry = libvlc_video_get_crop_geometry(p_md);
if( !psz_geometry )
{
*geometry = BSTRFromCStr(CP_UTF8, psz_geometry);
if( NULL == geometry ) hr = E_OUTOFMEMORY;
} else if( NULL == psz_geometry ) hr = E_OUTOFMEMORY;
if( !geometry )
hr = E_OUTOFMEMORY;
} else if( !psz_geometry )
hr = E_OUTOFMEMORY;
free( psz_geometry );
}
return hr;
......@@ -1156,19 +956,15 @@ STDMETHODIMP VLCVideo::put_crop(BSTR geometry)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
char *psz_geometry = CStrFromBSTR(CP_UTF8, geometry);
if( NULL == psz_geometry )
if( !psz_geometry )
{
return E_OUTOFMEMORY;
}
libvlc_video_set_crop_geometry(p_md, psz_geometry, &ex);
libvlc_video_set_crop_geometry(p_md, psz_geometry);
CoTaskMemFree(psz_geometry);
hr = exception_bridge(&ex);
}
return hr;
};
......@@ -1180,7 +976,6 @@ STDMETHODIMP VLCVideo::get_teletext(long* page)
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
*page = libvlc_video_get_teletext(p_md);
......@@ -1196,11 +991,7 @@ STDMETHODIMP VLCVideo::put_teletext(long page)
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_teletext(p_md, page, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_teletext(p_md, page);
}
return hr;
};
......@@ -1214,9 +1005,6 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
static int uniqueId = 0;
TCHAR path[MAX_PATH+1];
......@@ -1276,9 +1064,7 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
return E_FAIL;
/* take snapshot into file */
libvlc_video_take_snapshot(p_md, psz_filepath, 0, 0, &ex);
hr = exception_bridge(&ex);
if( SUCCEEDED(hr) )
if( libvlc_video_take_snapshot(p_md, 0, psz_filepath, 0, 0) == 0 )
{
/* open snapshot file */
HANDLE snapPic = LoadImage(NULL, filepath, IMAGE_BITMAP, 0, 0,
......@@ -1312,11 +1098,7 @@ STDMETHODIMP VLCVideo::toggleFullscreen()
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_toggle_fullscreen(p_md, &ex);
hr = exception_bridge(&ex);
libvlc_toggle_fullscreen(p_md);
}
return hr;
};
......@@ -1327,11 +1109,7 @@ STDMETHODIMP VLCVideo::toggleTeletext()
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_toggle_teletext(p_md, &ex);
hr = exception_bridge(&ex);
libvlc_toggle_teletext(p_md);
}
return hr;
};
......@@ -1351,7 +1129,6 @@ STDMETHODIMP VLCVideo::get_deinterlace(IVLCDeinterlace** obj)
return object_get(obj,_p_vlcdeint);
}
/****************************************************************************/
HRESULT VLCLogo::do_put_int(unsigned idx, LONG val)
......@@ -1360,10 +1137,7 @@ HRESULT VLCLogo::do_put_int(unsigned idx, LONG val)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_logo_int(p_md, idx, val, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_logo_int(p_md, idx, val);
}
return hr;
}
......@@ -1377,10 +1151,7 @@ HRESULT VLCLogo::do_get_int(unsigned idx, LONG *val)
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
*val = libvlc_video_get_logo_int(p_md, idx, &ex);
hr = exception_bridge(&ex);
*val = libvlc_video_get_logo_int(p_md, idx);
}
return hr;
}
......@@ -1395,10 +1166,7 @@ STDMETHODIMP VLCLogo::file(BSTR fname)
if( SUCCEEDED(hr) )
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
libvlc_video_set_logo_string(p_md, libvlc_logo_file, n, &ex);
hr = exception_bridge(&ex);
libvlc_video_set_logo_string(p_md, libvlc_logo_file, n);
}
CoTaskMemFree(n);
......@@ -1632,15 +1400,13 @@ STDMETHODIMP VLCControl2::get_StartTime(long *seconds)
return E_POINTER;
*seconds = _p_instance->getStartTime();
return S_OK;
};
STDMETHODIMP VLCControl2::put_StartTime(long seconds)
{
_p_instance->setStartTime(seconds);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl2::get_VersionInfo(BSTR *version)
......@@ -1666,14 +1432,13 @@ STDMETHODIMP VLCControl2::get_Visible(VARIANT_BOOL *isVisible)
*isVisible = varbool( _p_instance->getVisible() );
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl2::put_Visible(VARIANT_BOOL isVisible)
{
_p_instance->setVisible(isVisible != VARIANT_FALSE);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl2::get_Volume(long *volume)
......@@ -1682,13 +1447,13 @@ STDMETHODIMP VLCControl2::get_Volume(long *volume)
return E_POINTER;
*volume = _p_instance->getVolume();
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl2::put_Volume(long volume)
{
_p_instance->setVolume(volume);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl2::get_BackColor(OLE_COLOR *backcolor)
......@@ -1697,13 +1462,13 @@ STDMETHODIMP VLCControl2::get_BackColor(OLE_COLOR *backcolor)
return E_POINTER;
*backcolor = _p_instance->getBackColor();
return NOERROR;
return S_OKs;
};
STDMETHODIMP VLCControl2::put_BackColor(OLE_COLOR backcolor)
{
_p_instance->setBackColor(backcolor);
return NOERROR;
return S_OK;
};
STDMETHODIMP VLCControl2::get_audio(IVLCAudio** obj)
......
......@@ -40,7 +40,6 @@ public:
HRESULT getMD(libvlc_media_player_t **pp) const { return _plug->getMD(pp); }
protected:
HRESULT report_exception(REFIID riid, libvlc_exception_t *ex);
HRESULT loadTypeInfo(REFIID riid);
ITypeInfo *TypeInfo() const { return _ti; }
......@@ -71,12 +70,6 @@ public:
HRESULT getVLC(libvlc_instance_t **pp) const { return Base::getVLC(pp); }
HRESULT getMD(libvlc_media_player_t **pp) const { return Base::getMD(pp); }
HRESULT exception_bridge(libvlc_exception_t *ex)
{
return libvlc_exception_raised(ex) ?
Base::report_exception(_riid,ex) : NOERROR;
}
STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
{
if( NULL == ppv ) return E_POINTER;
......@@ -206,7 +199,6 @@ private:
HRESULT do_get_int(unsigned idx, LONG *val);
};
class VLCLogo: public VLCInterface<VLCLogo,IVLCLogo>
{
public:
......@@ -239,7 +231,6 @@ private:
HRESULT do_get_int(unsigned idx, LONG *val);
};
class VLCDeinterlace: public VLCInterface<VLCDeinterlace,IVLCDeinterlace>
{
public:
......@@ -250,7 +241,6 @@ public:
STDMETHODIMP disable();
};
class VLCPlaylistItems: public VLCInterface<VLCPlaylistItems,IVLCPlaylistItems>
{
public:
......
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