VLC  4.0.0-dev
playlist.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * playlist/playlist.h
3  *****************************************************************************
4  * Copyright (C) 2018 VLC authors and VideoLAN
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation; either version 2.1 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19  *****************************************************************************/
20 
21 #ifndef VLC_PLAYLIST_NEW_INTERNAL_H
22 #define VLC_PLAYLIST_NEW_INTERNAL_H
23 
24 #include <vlc_common.h>
25 #include <vlc_playlist.h>
26 #include <vlc_vector.h>
27 #include "../player/player.h"
28 #include "randomizer.h"
29 
30 typedef struct input_item_t input_item_t;
31 
32 #ifdef TEST_PLAYLIST
33 /* mock the player in tests */
34 # define vlc_player_New(a,b,c,d) (VLC_UNUSED(a), VLC_UNUSED(b), VLC_UNUSED(c), \
35  malloc(1))
36 # define vlc_player_Delete(p) free(p)
37 # define vlc_player_Lock(p) VLC_UNUSED(p)
38 # define vlc_player_Unlock(p) VLC_UNUSED(p)
39 # define vlc_player_AddListener(a,b,c) (VLC_UNUSED(b), malloc(1))
40 # define vlc_player_RemoveListener(a,b) free(b)
41 # define vlc_player_SetCurrentMedia(a,b) (VLC_UNUSED(b), VLC_SUCCESS)
42 # define vlc_player_InvalidateNextMedia(p) VLC_UNUSED(p)
43 # define vlc_player_osd_Message(p, fmt...) VLC_UNUSED(p)
44 #endif /* TEST_PLAYLIST */
45 
47 
49 {
53  /* all remaining fields are protected by the lock of the player */
57  ssize_t current;
58  bool has_prev;
59  bool has_next;
60  struct vlc_list listeners; /**< list of vlc_playlist_listener_id.node */
63  uint64_t idgen;
64 };
65 
66 /* Also disable vlc_assert_locked in tests since the symbol is not exported */
67 #if !defined(NDEBUG) && !defined(TEST_PLAYLIST)
68 static inline void
70 {
72 }
73 #else
74 #define vlc_playlist_AssertLocked(x) ((void) (0))
75 #endif
76 
77 #endif
vlc_player_t * player
Definition: playlist.h:50
vlc_playlist_playback_repeat
Definition: vlc_playlist.h:116
Definition: playlist.h:48
Definition: player.h:208
Playlist helper to manage random playback.
Definition: randomizer.h:39
Describes an input and is used to spawn input_thread_t objects.
Definition: vlc_input_item.h:77
static void vlc_player_assert_locked(vlc_player_t *player)
Definition: player.h:270
This file is a collection of common definitions and types.
bool auto_preparse
Definition: playlist.h:52
libvlc_int_t * libvlc
Definition: playlist.h:51
Definition: vlc_objects.h:115
struct vlc_list listeners
list of vlc_playlist_listener_id.node
Definition: playlist.h:60
playlist_item_vector_t items
Definition: playlist.h:55
static void vlc_playlist_AssertLocked(vlc_playlist_t *playlist)
Definition: playlist.h:69
enum vlc_playlist_playback_repeat repeat
Definition: playlist.h:61
bool has_next
Definition: playlist.h:59
Definition: player.h:122
bool has_prev
Definition: playlist.h:58
#define VLC_VECTOR(type)
Vector struct body.
Definition: vlc_vector.h:65
struct vlc_player_listener_id * player_listener
Definition: playlist.h:54
Definition: playlist.h:46
vlc_playlist_playback_order
Definition: vlc_playlist.h:123
ssize_t current
Definition: playlist.h:57
Doubly-linked list node.
Definition: vlc_list.h:43
This provides convenience helpers for vectors.
uint64_t idgen
Definition: playlist.h:63
Definition: item.h:29
enum vlc_playlist_playback_order order
Definition: playlist.h:62