Skip to content
Snippets Groups Projects
Commit 1a9ab8b5 authored by Romain Vimont's avatar Romain Vimont Committed by Steve Lhomme
Browse files

qt: use static free functions for C callbacks

Callbacks to be called from C should be free functions rather than class
members.
parent 0aeafa2d
No related branches found
No related tags found
1 merge request!2623qt: refactor media tree/source models
#include "networksourcelistener.hpp"
NetworkSourceListener::NetworkSourceListener(MediaSourcePtr s, SourceListenerCb* m)
: source( s )
, listener( nullptr, [s]( vlc_media_tree_listener_id* l ) {
vlc_media_tree_RemoveListener( s->tree, l );
} )
, cb( m )
{
static const vlc_media_tree_callbacks cbs {
&NetworkSourceListener::onItemCleared,
&NetworkSourceListener::onItemAdded,
&NetworkSourceListener::onItemRemoved,
&NetworkSourceListener::onItemPreparseEnded
};
auto l = vlc_media_tree_AddListener( s->tree, &cbs, this, true );
if ( l == nullptr )
return;
listener.reset( l );
}
void NetworkSourceListener::onItemCleared( vlc_media_tree_t*, input_item_node_t* node,
void* userdata)
static void onItemCleared(vlc_media_tree_t*, input_item_node_t *node,
void* userdata)
{
auto* self = static_cast<NetworkSourceListener*>( userdata );
self->cb->onItemCleared( self->source, node );
}
void NetworkSourceListener::onItemAdded( vlc_media_tree_t *, input_item_node_t * parent,
input_item_node_t *const children[], size_t count,
void *userdata )
static void onItemAdded(vlc_media_tree_t *, input_item_node_t *parent,
input_item_node_t *const children[], size_t count,
void *userdata)
{
auto* self = static_cast<NetworkSourceListener*>( userdata );
auto source = self->source;
self->cb->onItemAdded( self->source, parent, children, count );
}
void NetworkSourceListener::onItemRemoved( vlc_media_tree_t *, input_item_node_t * node,
input_item_node_t *const children[], size_t count,
void *userdata )
static void onItemRemoved(vlc_media_tree_t *, input_item_node_t *node,
input_item_node_t *const children[], size_t count,
void *userdata)
{
auto* self = static_cast<NetworkSourceListener*>( userdata );
self->cb->onItemRemoved( self->source, node, children, count );
}
void NetworkSourceListener::onItemPreparseEnded(vlc_media_tree_t *, input_item_node_t * node, enum input_item_preparse_status status, void *userdata)
static void onItemPreparseEnded(vlc_media_tree_t *, input_item_node_t * node,
enum input_item_preparse_status status,
void *userdata)
{
auto* self = static_cast<NetworkSourceListener*>( userdata );
self->cb->onItemPreparseEnded( self->source, node, status );
}
NetworkSourceListener::NetworkSourceListener(MediaSourcePtr s, SourceListenerCb* m)
: source( s )
, listener( nullptr, [s]( vlc_media_tree_listener_id* l ) {
vlc_media_tree_RemoveListener( s->tree, l );
} )
, cb( m )
{
static const vlc_media_tree_callbacks cbs {
&onItemCleared,
&onItemAdded,
&onItemRemoved,
&onItemPreparseEnded
};
auto l = vlc_media_tree_AddListener( s->tree, &cbs, this, true );
if ( l == nullptr )
return;
listener.reset( l );
}
......@@ -58,19 +58,6 @@ public:
NetworkSourceListener( const NetworkSourceListener& ) = delete;
NetworkSourceListener& operator=( const NetworkSourceListener& ) = delete;
static void onItemCleared( vlc_media_tree_t* tree, input_item_node_t* node,
void* userdata );
static void onItemAdded( vlc_media_tree_t *tree, input_item_node_t *node,
input_item_node_t *const children[], size_t count,
void *userdata );
static void onItemRemoved( vlc_media_tree_t *tree, input_item_node_t *node,
input_item_node_t *const children[], size_t count,
void *userdata );
static void onItemPreparseEnded( vlc_media_tree_t *tree, input_item_node_t *node,
enum input_item_preparse_status status,
void *userdata );
MediaSourcePtr source;
ListenerPtr listener = nullptr;
SourceListenerCb *cb = nullptr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment