Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
GSoC
GSoC2018
macOS
vlc
Commits
d228fdd2
Commit
d228fdd2
authored
Sep 27, 2008
by
Pierre d'Herbemont
Browse files
playlist: Move more members as private.
parent
696f3a43
Changes
22
Hide whitespace changes
Inline
Side-by-side
include/vlc_playlist.h
View file @
d228fdd2
...
...
@@ -158,14 +158,6 @@ struct playlist_t
{
VLC_COMMON_MEMBERS
struct
playlist_services_discovery_support_t
{
/* the playlist items for category and onelevel */
playlist_item_t
*
p_cat
;
playlist_item_t
*
p_one
;
services_discovery_t
*
p_sd
;
/**< Loaded service discovery modules */
}
**
pp_sds
;
int
i_sds
;
/**< Number of service discovery modules */
playlist_item_array_t
items
;
/**< Arrays of items */
playlist_item_array_t
all_items
;
/**< Array of items and nodes */
playlist_item_array_t
items_to_delete
;
/**< Array of items and nodes to
...
...
@@ -194,34 +186,11 @@ struct playlist_t
bool
b_auto_preparse
;
/* Runtime */
input_thread_t
*
p_input
;
/**< the input thread associated
* with the current item */
int
i_sort
;
/**< Last sorting applied to the playlist */
int
i_order
;
/**< Last ordering applied to the playlist */
mtime_t
gc_date
;
bool
b_cant_sleep
;
struct
{
/* Current status. These fields are readonly, only the playlist
* main loop can touch it*/
playlist_status_t
i_status
;
/**< Current status of playlist */
playlist_item_t
*
p_item
;
/**< Currently playing/active item */
playlist_item_t
*
p_node
;
/**< Current node to play from */
}
status
;
struct
{
/* Request. Use this to give orders to the playlist main loop */
playlist_status_t
i_status
;
/**< requested playlist status */
playlist_item_t
*
p_node
;
/**< requested node to play from */
playlist_item_t
*
p_item
;
/**< requested item to play in the node */
int
i_skip
;
/**< Number of items to skip */
bool
b_request
;
/**< Set to true by the requester
The playlist sets it back to false
when processing the request */
vlc_mutex_t
lock
;
/**< Lock to protect request */
}
request
;
};
/** Helper to add an item */
...
...
@@ -316,19 +285,15 @@ VLC_EXPORT( int, playlist_PreparseEnqueueItem, (playlist_t *, playlist_item_t *)
/** Request the art for an input item to be fetched */
VLC_EXPORT
(
int
,
playlist_AskForArtEnqueue
,
(
playlist_t
*
,
input_item_t
*
)
);
/********************** Services discovery ***********************/
/** Add a list of comma-separated service discovery modules */
VLC_EXPORT
(
int
,
playlist_ServicesDiscoveryAdd
,
(
playlist_t
*
,
const
char
*
));
/** Remove a services discovery module by name */
VLC_EXPORT
(
int
,
playlist_ServicesDiscoveryRemove
,
(
playlist_t
*
,
const
char
*
));
/** Check whether a given SD is loaded */
VLC_EXPORT
(
bool
,
playlist_IsServicesDiscoveryLoaded
,
(
playlist_t
*
,
const
char
*
));
/* Playlist sorting */
VLC_EXPORT
(
int
,
playlist_TreeMove
,
(
playlist_t
*
,
playlist_item_t
*
,
playlist_item_t
*
,
int
)
);
VLC_EXPORT
(
int
,
playlist_RecursiveNodeSort
,
(
playlist_t
*
,
playlist_item_t
*
,
int
,
int
)
);
VLC_EXPORT
(
playlist_item_t
*
,
playlist_CurrentPlayingItem
,
(
playlist_t
*
)
);
VLC_EXPORT
(
int
,
playlist_CurrentId
,
(
playlist_t
*
)
);
VLC_EXPORT
(
bool
,
playlist_IsPlaying
,
(
playlist_t
*
)
);
VLC_EXPORT
(
int
,
playlist_Status
,
(
playlist_t
*
)
);
/**
* Export a node of the playlist to a certain type of playlistfile
* \param p_playlist the playlist to export
...
...
@@ -339,6 +304,17 @@ VLC_EXPORT( int, playlist_RecursiveNodeSort, ( playlist_t *, playlist_item_t *,
*/
VLC_EXPORT
(
int
,
playlist_Export
,
(
playlist_t
*
p_playlist
,
const
char
*
psz_name
,
playlist_item_t
*
p_export_root
,
const
char
*
psz_type
)
);
/********************** Services discovery ***********************/
/** Add a list of comma-separated service discovery modules */
VLC_EXPORT
(
int
,
playlist_ServicesDiscoveryAdd
,
(
playlist_t
*
,
const
char
*
));
/** Remove a services discovery module by name */
VLC_EXPORT
(
int
,
playlist_ServicesDiscoveryRemove
,
(
playlist_t
*
,
const
char
*
));
/** Check whether a given SD is loaded */
VLC_EXPORT
(
bool
,
playlist_IsServicesDiscoveryLoaded
,
(
playlist_t
*
,
const
char
*
));
/********************************************************
* Item management
********************************************************/
...
...
@@ -427,22 +403,12 @@ static inline input_thread_t * __pl_CurrentInput( vlc_object_t * p_this )
return
p_input
;
}
/** Tell if the playlist is currently running */
#define playlist_IsPlaying( pl ) ( pl->status.i_status == PLAYLIST_RUNNING && \
!(pl->request.b_request && pl->request.i_status == PLAYLIST_STOPPED) )
#define playlist_IsStopped( pl ) ( pl->status.i_status == PLAYLIST_STOPPED || \
(pl->request.b_request && pl->request.i_status == PLAYLIST_STOPPED) )
/** Tell if the playlist is empty */
#define playlist_IsEmpty( pl ) ( pl->items.i_size == 0 )
/** Tell the number of items in the current playing context */
#define playlist_CurrentSize( pl ) pl->current.i_size
/** Tell the current item id in current playing context */
#define playlist_CurrentId( pl ) pl->status.p_item->i_id
/** Ask the playlist to do some work */
#define playlist_Signal( p_playlist ) vlc_object_signal( p_playlist )
...
...
modules/access/cdda.c
View file @
d228fdd2
...
...
@@ -198,8 +198,8 @@ static int Open( vlc_object_t *p_this )
input_item_t
*
p_current
=
input_GetItem
(
p_input
);
playlist_item_t
*
p_item
;
if
(
p_
playlist
->
status
.
p_item
->
p_input
==
p_current
)
p_item
=
p_
playlist
->
status
.
p_item
;
if
(
playlist
_CurrentPlayingItem
(
p_playlist
)
->
p_input
==
p_current
)
p_item
=
playlist
_CurrentPlayingItem
(
p_playlist
)
;
else
p_item
=
playlist_ItemGetByInput
(
p_playlist
,
p_current
,
pl_Unlocked
);
...
...
modules/access/cdda/info.c
View file @
d228fdd2
...
...
@@ -884,7 +884,7 @@ CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
{
p_item
=
playlist_ItemGetByInput
(
p_playlist
,
input_GetItem
(
p_input
),
pl_Unlocked
);
if
(
p_item
==
p_
playlist
->
status
.
p_item
&&
!
b_single_track
)
if
(
p_item
==
playlist
_CurrentPlayingItem
(
p_playlist
)
&&
!
b_single_track
)
b_play
=
true
;
else
b_play
=
false
;
...
...
@@ -964,7 +964,7 @@ CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
if
(
b_play
)
{
playlist_Control
(
p_playlist
,
PLAYLIST_VIEWPLAY
,
pl_Unlocked
,
p_
playlist
->
status
.
p_item
,
NULL
);
playlist
_CurrentPlayingItem
(
p_playlist
)
,
NULL
);
}
if
(
p_playlist
)
pl_Release
(
p_access
);
...
...
modules/codec/cmml/intf.c
View file @
d228fdd2
...
...
@@ -440,7 +440,7 @@ static void FollowAnchor ( intf_thread_t *p_intf )
p_playlist
=
pl_Hold
(
p_intf
);
/* Get new URL */
p_current_item
=
p_
playlist
->
status
.
p_item
;
p_current_item
=
playlist
_CurrentPlayingItem
(
p_playlist
)
;
char
*
psz_uri
=
input_item_GetURI
(
p_current_item
->
p_input
);
#ifdef CMML_INTF_DEBUG
msg_Dbg
(
p_intf
,
"Current playlist item URL is
\"
%s
\"
"
,
psz_uri
);
...
...
@@ -668,7 +668,7 @@ void GoBack( intf_thread_t *p_intf )
return
;
}
p_current_item
=
p_
playlist
->
status
.
p_item
;
p_current_item
=
playlist
_CurrentPlayingItem
(
p_playlist
)
;
/* Save the currently-playing media in a new history item */
psz_timed_url
=
GetTimedURLFromPlaylistItem
(
p_intf
,
p_current_item
);
...
...
@@ -750,7 +750,7 @@ void GoForward( intf_thread_t *p_intf )
vlc_object_release
(
p_playlist
);
return
;
}
p_current_item
=
p_
playlist
->
status
.
p_item
;
p_current_item
=
playlist
_CurrentPlayingItem
(
p_playlist
)
;
p_new_history_item
->
psz_uri
=
GetTimedURLFromPlaylistItem
(
p_intf
,
p_current_item
);
p_new_history_item
->
psz_name
=
p_new_history_item
->
psz_uri
;
...
...
modules/control/gestures.c
View file @
d228fdd2
...
...
@@ -139,15 +139,7 @@ static int gesture( int i_pattern, int i_num )
*****************************************************************************/
static
input_thread_t
*
input_from_playlist
(
playlist_t
*
p_playlist
)
{
input_thread_t
*
p_input
;
PL_LOCK
;
p_input
=
p_playlist
->
p_input
;
if
(
p_input
)
vlc_object_hold
(
p_input
);
PL_UNLOCK
;
return
p_input
;
return
playlist_CurrentInput
(
p_playlist
);
}
/*****************************************************************************
...
...
modules/control/hotkeys.c
View file @
d228fdd2
...
...
@@ -174,11 +174,7 @@ static void Run( intf_thread_t *p_intf )
canc
=
vlc_savecancel
();
/* Update the input */
PL_LOCK
;
p_input
=
p_playlist
->
p_input
;
if
(
p_input
)
vlc_object_hold
(
p_input
);
PL_UNLOCK
;
p_input
=
playlist_CurrentInput
(
p_playlist
);
/* Update the vout */
p_last_vout
=
p_vout
;
...
...
@@ -978,9 +974,10 @@ static void SetBookmark( intf_thread_t *p_intf, int i_num )
sprintf
(
psz_bookmark_name
,
"bookmark%i"
,
i_num
);
var_Create
(
p_intf
,
psz_bookmark_name
,
VLC_VAR_STRING
|
VLC_VAR_DOINHERIT
);
if
(
p_playlist
->
status
.
p_item
)
playlist_item_t
*
p_item
=
playlist_CurrentPlayingItem
(
p_playlist
);
if
(
p_item
)
{
char
*
psz_uri
=
input_item_GetURI
(
p_playlist
->
status
.
p_item
->
p_input
);
char
*
psz_uri
=
input_item_GetURI
(
p_item
->
p_input
);
config_PutPsz
(
p_intf
,
psz_bookmark_name
,
psz_uri
);
msg_Info
(
p_intf
,
"setting playlist bookmark %i to %s"
,
i_num
,
psz_uri
);
free
(
psz_uri
);
...
...
modules/control/http/http.c
View file @
d228fdd2
...
...
@@ -384,10 +384,9 @@ static void ParseExecute( httpd_file_sys_t *p_args, char *p_buffer,
assert
(
p_sys
->
p_input
==
NULL
);
/* FIXME: proper locking anyone? */
p_sys
->
p_input
=
p_sys
->
p_playlist
->
p_input
;
p_sys
->
p_input
=
playlist_CurrentInput
(
p_sys
->
p_playlist
)
;
if
(
p_sys
->
p_input
)
{
vlc_object_hold
(
p_sys
->
p_input
);
var_Get
(
p_sys
->
p_input
,
"position"
,
&
val
);
sprintf
(
position
,
"%d"
,
(
int
)((
val
.
f_float
)
*
100
.
0
));
var_Get
(
p_sys
->
p_input
,
"time"
,
&
val
);
...
...
modules/control/http/util.c
View file @
d228fdd2
...
...
@@ -352,10 +352,10 @@ void PlaylistListNode( intf_thread_t *p_intf, playlist_t *p_pl,
char
value
[
512
];
char
*
psz
;
mvar_t
*
itm
=
mvar_New
(
name
,
"set"
);
if
(
p_pl
->
status
.
p_item
&&
p_node
&&
p_pl
->
status
.
p_item
->
p_input
&&
p_node
->
p_input
&&
p_pl
->
status
.
p_item
->
p_input
->
i_id
==
p_node
->
p_input
->
i_id
)
playlist_item_t
*
p_item
=
playlist_CurrentPlayingItem
(
p_pl
);
if
(
p_item
&&
p_node
&&
p_item
->
p_input
&&
p_node
->
p_input
&&
p_item
->
p_input
->
i_id
==
p_node
->
p_input
->
i_id
)
{
mvar_AppendNewVar
(
itm
,
"current"
,
"1"
);
}
...
...
modules/control/rc.c
View file @
d228fdd2
...
...
@@ -553,24 +553,25 @@ static void Run( intf_thread_t *p_intf )
(
p_playlist
!=
NULL
)
)
{
PL_LOCK
;
if
(
(
p_intf
->
p_sys
->
i_last_state
!=
p_playlist
->
status
.
i_status
)
&&
(
p_playlist
->
status
.
i_status
==
PLAYLIST_STOPPED
)
)
int
status
=
playlist_Status
(
p_playlist
);
if
(
(
p_intf
->
p_sys
->
i_last_state
!=
status
)
&&
(
status
==
PLAYLIST_STOPPED
)
)
{
p_intf
->
p_sys
->
i_last_state
=
PLAYLIST_STOPPED
;
msg_rc
(
STATUS_CHANGE
"( stop state: 5 )"
);
}
else
if
(
(
p_intf
->
p_sys
->
i_last_state
!=
p_playlist
->
status
.
i_
status
)
&&
(
p_playlist
->
status
.
i_
status
==
PLAYLIST_RUNNING
)
)
(
p_intf
->
p_sys
->
i_last_state
!=
status
)
&&
(
status
==
PLAYLIST_RUNNING
)
)
{
p_intf
->
p_sys
->
i_last_state
=
p_playlist
->
status
.
i_status
;
p_intf
->
p_sys
->
i_last_state
=
PLAYLIST_RUNNING
;
msg_rc
(
STATUS_CHANGE
"( play state: 3 )"
);
}
else
if
(
(
p_intf
->
p_sys
->
i_last_state
!=
p_playlist
->
status
.
i_
status
)
&&
(
p_playlist
->
status
.
i_
status
==
PLAYLIST_PAUSED
)
)
(
p_intf
->
p_sys
->
i_last_state
!=
status
)
&&
(
status
==
PLAYLIST_PAUSED
)
)
{
p_intf
->
p_sys
->
i_last_state
=
p_playlist
->
status
.
i_status
;
p_intf
->
p_sys
->
i_last_state
=
PLAYLIST_PAUSED
;
msg_rc
(
STATUS_CHANGE
"( pause state: 4 )"
);
}
PL_UNLOCK
;
...
...
@@ -993,7 +994,7 @@ static int StateChanged( vlc_object_t *p_this, char const *psz_cmd,
{
p_playlist
=
pl_Hold
(
p_input
);
char
cmd
[
6
];
switch
(
p_
playlist
->
s
tatus
.
i_status
)
switch
(
playlist
_S
tatus
(
p_playlist
)
)
{
case
PLAYLIST_STOPPED
:
strcpy
(
cmd
,
"stop"
);
...
...
@@ -1304,20 +1305,20 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
playlist_t
*
p_playlist
=
pl_Hold
(
p_this
);
input_thread_t
*
p_input
=
playlist_CurrentInput
(
p_playlist
);
PL_LOCK
;
if
(
p_playlist
->
p_input
)
if
(
p_input
)
{
var_Get
(
p_playlist
->
p_input
,
"state"
,
&
val
);
var_Get
(
p_input
,
"state"
,
&
val
);
vlc_object_release
(
p_input
);
if
(
(
val
.
i_int
==
PAUSE_S
)
||
(
val
.
i_int
==
PLAYLIST_PAUSED
)
)
{
msg_rc
(
_
(
"Type 'menu select' or 'pause' to continue."
)
);
vlc_object_release
(
p_playlist
);
PL_UNLOCK
;
pl_Release
(
p_this
);
return
VLC_EGENERIC
;
}
}
PL_UNLOCK
;
/* Parse commands that require a playlist */
if
(
!
strcmp
(
psz_cmd
,
"prev"
)
)
...
...
@@ -1476,18 +1477,19 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
}
else
if
(
!
strcmp
(
psz_cmd
,
"status"
)
)
{
if
(
p_playlist
->
p_input
)
input_thread_t
*
p_input
=
playlist_CurrentInput
(
p_playlist
);
if
(
p_input
)
{
/* Replay the current state of the system. */
char
*
psz_uri
=
input_item_GetURI
(
input_GetItem
(
p_playlist
->
p_input
)
);
input_item_GetURI
(
input_GetItem
(
p_input
)
);
msg_rc
(
STATUS_CHANGE
"( new input: %s )"
,
psz_uri
);
free
(
psz_uri
);
msg_rc
(
STATUS_CHANGE
"( audio volume: %d )"
,
config_GetInt
(
p_intf
,
"volume"
));
PL_LOCK
;
switch
(
p_
playlist
->
s
tatus
.
i_status
)
switch
(
playlist
_S
tatus
(
p_playlist
)
)
{
case
PLAYLIST_STOPPED
:
msg_rc
(
STATUS_CHANGE
"( stop state: 5 )"
);
...
...
@@ -1503,6 +1505,7 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
break
;
}
PL_UNLOCK
;
vlc_object_release
(
p_input
);
}
}
...
...
@@ -1514,7 +1517,7 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
msg_rc
(
"unknown command!"
);
}
vlc_object_r
elease
(
p_
playl
is
t
);
pl_R
elease
(
p_
th
is
);
return
VLC_SUCCESS
;
}
...
...
@@ -1913,19 +1916,22 @@ static int Menu( vlc_object_t *p_this, char const *psz_cmd,
}
p_playlist
=
pl_Hold
(
p_this
);
input_thread_t
*
p_input
=
playlist_CurrentInput
(
p_playlist
);
if
(
p_playlist
->
p_input
)
if
(
p_input
)
{
var_Get
(
p_playlist
->
p_input
,
"state"
,
&
val
);
var_Get
(
p_input
,
"state"
,
&
val
);
vlc_object_release
(
p_input
);
if
(
(
(
val
.
i_int
==
PAUSE_S
)
||
(
val
.
i_int
==
PLAYLIST_PAUSED
)
)
&&
(
strcmp
(
newval
.
psz_string
,
"select"
)
!=
0
)
)
{
msg_rc
(
_
(
"Type 'menu select' or 'pause' to continue."
)
);
vlc_object_r
elease
(
p_
playl
is
t
);
pl_R
elease
(
p_
th
is
);
return
VLC_EGENERIC
;
}
}
vlc_object_r
elease
(
p_
playl
is
t
);
pl_R
elease
(
p_
th
is
);
val
.
psz_string
=
strdup
(
newval
.
psz_string
);
if
(
!
val
.
psz_string
)
...
...
modules/gui/macosx/intf.m
View file @
d228fdd2
...
...
@@ -1802,12 +1802,11 @@ end:
if
(
p_input
&&
vlc_object_alive
(
p_input
)
)
{
NSString
*
o_temp
;
if
(
input_item_GetNowPlaying
(
p_playlist
->
status
.
p_item
->
p_inpu
t
)
)
o_temp
=
[
NSString
stringWithUTF8String
:
input_item_GetNowPlaying
(
p_playlist
->
status
.
p_item
->
p_input
)];
playlist_item_t
*
p_item
=
playlist_CurrentPlayingItem
(
p_playlis
t
)
;
if
(
input_item_GetNowPlaying
(
p_item
->
p_input
)
)
o_temp
=
[
NSString
stringWithUTF8String
:
input_item_GetNowPlaying
(
p_item
->
p_input
)];
else
o_temp
=
[
NSString
stringWithUTF8String
:
p_playlist
->
status
.
p_item
->
p_input
->
psz_name
];
o_temp
=
[
NSString
stringWithUTF8String
:
p_item
->
p_input
->
psz_name
];
[
self
setScrollField
:
o_temp
stopAfter
:
-
1
];
[[[
self
getControls
]
getFSPanel
]
setStreamTitle
:
o_temp
];
vlc_object_release
(
p_input
);
...
...
modules/gui/macosx/playlist.m
View file @
d228fdd2
...
...
@@ -565,10 +565,10 @@
playlist_item_t
*
p_item
,
*
p_temp_item
;
NSMutableArray
*
o_array
=
[
NSMutableArray
array
];
p_item
=
p_
playlist
->
status
.
p_item
;
p_item
=
playlist
_CurrentPlayingItem
(
p_playlist
)
;
if
(
p_item
==
NULL
)
{
vlc_object_release
(
p_playlist
);
pl_Release
(
VLCIntf
);
return
;
}
...
...
@@ -591,8 +591,7 @@
}
vlc_object_release
(
p_playlist
);
pl_Release
(
VLCIntf
);
}
/* Check if p_item is a child of p_node recursively. We need to check the item
...
...
@@ -904,8 +903,8 @@
if
(
p_item
->
i_children
!=
-
1
)
//is a node and not an item
{
if
(
p_
playlist
->
s
tatus
.
i_status
!=
PLAYLIST_STOPPED
&&
[
self
isItem
:
p_
playlist
->
status
.
p_item
inNode
:
if
(
playlist
_S
tatus
(
p_playlist
)
!=
PLAYLIST_STOPPED
&&
[
self
isItem
:
playlist
_CurrentPlayingItem
(
p_playlist
)
inNode
:
((
playlist_item_t
*
)[
o_item
pointerValue
])
checkItemExistence:
NO
locked
:
YES
]
==
YES
)
// if current item is in selected node and is playing then stop playlist
...
...
@@ -1378,7 +1377,7 @@
id
o_playing_item
;
o_playing_item
=
[
o_outline_dict
objectForKey
:
[
NSString
stringWithFormat
:
@"%p"
,
p_
playlist
->
status
.
p_item
]];
[
NSString
stringWithFormat
:
@"%p"
,
playlist
_CurrentPlayingItem
(
p_playlist
)
]];
if
(
[
self
isItem
:
[
o_playing_item
pointerValue
]
inNode
:
[
item
pointerValue
]
checkItemExistence
:
YES
]
...
...
modules/gui/ncurses.c
View file @
d228fdd2
...
...
@@ -412,14 +412,7 @@ static void Run( intf_thread_t *p_intf )
PL_LOCK
;
if
(
p_sys
->
p_input
==
NULL
)
{
p_sys
->
p_input
=
p_playlist
->
p_input
;
if
(
p_sys
->
p_input
)
{
if
(
!
p_sys
->
p_input
->
b_dead
)
{
vlc_object_hold
(
p_sys
->
p_input
);
}
}
p_sys
->
p_input
=
playlist_CurrentInput
(
p_playlist
);
}
else
if
(
p_sys
->
p_input
->
b_dead
)
{
...
...
@@ -430,7 +423,7 @@ static void Run( intf_thread_t *p_intf )
}
PL_UNLOCK
;
if
(
p_sys
->
b_box_plidx_follow
&&
p_
playlist
->
status
.
p_item
)
if
(
p_sys
->
b_box_plidx_follow
&&
playlist
_CurrentPlayingItem
(
p_playlist
)
)
{
FindIndex
(
p_intf
);
}
...
...
@@ -794,7 +787,7 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
playlist_item_t
*
p_parent
=
p_sys
->
p_node
;
if
(
!
p_parent
)
p_parent
=
p
_playlist
->
status
.
p_node
;
p_parent
=
p
laylist_CurrentPlayingItem
(
p_playlist
)
?
playlist_CurrentPlayingItem
(
p_playlist
)
->
p_parent
:
NULL
;
if
(
!
p_parent
)
p_parent
=
p_playlist
->
p_local_onelevel
;
...
...
@@ -996,7 +989,7 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
playlist_item_t
*
p_parent
=
p_sys
->
p_node
;
if
(
!
p_parent
)
p_parent
=
p
_playlist
->
status
.
p_node
;
p_parent
=
p
laylist_CurrentPlayingItem
(
p_playlist
)
?
playlist_CurrentPlayingItem
(
p_playlist
)
->
p_parent
:
NULL
;
if
(
!
p_parent
)
p_parent
=
p_playlist
->
p_local_onelevel
;
...
...
@@ -2187,7 +2180,7 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh )
int
c
=
' '
;
if
(
(
p_node
&&
p_item
->
p_input
==
p_node
->
p_input
)
||
(
!
p_node
&&
p_item
->
p_input
==
p_
playlist
->
status
.
p_node
->
p_input
)
)
playlist
_CurrentPlayingItem
(
p_playlist
)
->
p_input
)
)
c
=
'*'
;
else
if
(
p_item
==
p_node
||
(
p_item
!=
p_node
&&
PlaylistIsPlaying
(
p_intf
,
p_item
)
)
)
...
...
@@ -2350,7 +2343,7 @@ static int PlaylistChanged( vlc_object_t *p_this, const char *psz_variable,
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
param
;
playlist_t
*
p_playlist
=
pl_Hold
(
p_intf
);
p_intf
->
p_sys
->
b_need_update
=
true
;
p_intf
->
p_sys
->
p_node
=
p
_playlist
->
status
.
p_node
;
p_intf
->
p_sys
->
p_node
=
p
laylist_CurrentPlayingItem
(
p_playlist
)
?
playlist_CurrentPlayingItem
(
p_playlist
)
->
p_parent
:
NULL
;
vlc_object_release
(
p_playlist
);
return
VLC_SUCCESS
;
}
...
...
@@ -2360,7 +2353,7 @@ static inline bool PlaylistIsPlaying( intf_thread_t *p_intf,
playlist_item_t
*
p_item
)
{
playlist_t
*
p_playlist
=
pl_Hold
(
p_intf
);
playlist_item_t
*
p_played_item
=
p_
playlist
->
status
.
p_item
;
playlist_item_t
*
p_played_item
=
playlist
_CurrentPlayingItem
(
p_playlist
)
;
vlc_object_release
(
p_playlist
);
return
(
p_item
!=
NULL
&&
p_played_item
!=
NULL
&&
p_item
->
p_input
!=
NULL
&&
p_played_item
->
p_input
!=
NULL
&&
...
...
@@ -2419,14 +2412,14 @@ static void Eject( intf_thread_t *p_intf )
playlist_t
*
p_playlist
=
pl_Hold
(
p_intf
);
PL_LOCK
;
if
(
p_
playlist
->
status
.
p_item
==
NULL
)
if
(
playlist
_CurrentPlayingItem
(
p_playlist
)
==
NULL
)
{
PL_UNLOCK
;
vlc_object_release
(
p_playlist
);
return
;
}
psz_name
=
p_
playlist
->
status
.
p_item
->
p_input
->
psz_name
;
psz_name
=
playlist
_CurrentPlayingItem
(
p_playlist
)
->
p_input
->
psz_name
;
if
(
psz_name
)
{
...
...
modules/misc/audioscrobbler.c
View file @
d228fdd2
...
...
@@ -208,22 +208,18 @@ static void Close( vlc_object_t *p_this )
p_playlist
=
pl_Hold
(
p_intf
);
if
(
p_playlist
)
{
PL_LOCK
;
var_DelCallback
(
p_playlist
,
"playlist-current"
,
ItemChange
,
p_intf
);
p_input
=
p_
playlist
->
p_input
;
p_input
=
playlist
_CurrentInput
(
p_playlist
)
;
if
(
p_input
)
{
vlc_object_hold
(
p_input
);
if
(
p_sys
->
b_state_cb
)
var_DelCallback
(
p_input
,
"state"
,
PlayingChange
,
p_intf
);
vlc_object_release
(
p_input
);
}
PL_UNLOCK
;
pl_Release
(
p_intf
);
}
...
...
@@ -506,18 +502,14 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
p_sys
->
b_submit
=
false
;
p_playlist
=
pl_Hold
(
p_intf
);
PL_LOCK
;
p_input
=
p_playlist
->
p_input
;
p_input
=
playlist_CurrentInput
(
p_playlist
);
if
(
!
p_input
||
p_input
->
b_dead
)
{
PL_UNLOCK
;
pl_Release
(
p_intf
);
return
VLC_SUCCESS
;
}
vlc_object_hold
(
p_input
);
PL_UNLOCK
;
pl_Release
(
p_intf
);
p_item
=
input_GetItem
(
p_input
);
...
...
@@ -921,17 +913,13 @@ static int ReadMetaData( intf_thread_t *p_this )
intf_sys_t
*
p_sys
=
p_this
->
p_sys
;
p_playlist
=
pl_Hold
(
p_this
);
PL_LOCK
;
p_input
=
p_playlist
->
p_input
;
p_input
=
playlist_CurrentInput
(
p_playlist
);
if
(
!
p_input
)
{
PL_UNLOCK
;
pl_Release
(
p_this
);
return
(
VLC_SUCCESS
);
}
vlc_object_hold
(
p_input
);
PL_UNLOCK
;
pl_Release
(
p_this
);
p_item
=
input_GetItem
(
p_input
);
...
...
modules/misc/lua/libs/input.c
View file @
d228fdd2
...
...
@@ -49,10 +49,7 @@
input_thread_t
*
vlclua_get_input_internal
(
lua_State
*
L
)
{
playlist_t
*
p_playlist
=
vlclua_get_playlist_internal
(
L
);
PL_LOCK
;
input_thread_t
*
p_input
=
p_playlist
->
p_input
;
if
(
p_input
)
vlc_object_hold
(
p_input
);
PL_UNLOCK
;
input_thread_t
*
p_input
=
playlist_CurrentInput
(
p_playlist
);
vlclua_release_playlist_internal
(
p_playlist
);
return
p_input
;
}
...
...
modules/misc/lua/libs/playlist.c
View file @
d228fdd2
...
...
@@ -268,6 +268,7 @@ static int vlclua_playlist_get( lua_State *L )
else
{
int
i
;
#ifdef FIX_THAT_CODE_NOT_TO_MESS_WITH_PLAYLIST_INTERNALS