PKG_CHECK_MODULES([NCURSES], [ncursesw], [
VLC_ADD_PLUGIN([ncurses])
VLC_ADD_CFLAGS([ncurses],[${NCURSES_CFLAGS}])
- VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS}])
+ VLC_ADD_LIBS([ncurses],[${NCURSES_LIBS} ${LIBPTHREAD}])
ALIASES="${ALIASES} nvlc"
], [
AS_IF([test -n "${enable_ncurses}"], [
}
}
+static void cleanup_run(void *data)
+{
+ intf_thread_t *intf = data;
+ playlist_t *p_playlist = pl_Get(intf);
+ var_DelCallback(p_playlist, "intf-change", PlaylistChanged, intf);
+ var_DelCallback(p_playlist, "item-change", ItemChanged, intf);
+ var_DelCallback(p_playlist, "playlist-item-append", PlaylistChanged, intf);
+}
+
/*****************************************************************************
* Run: ncurses thread
*****************************************************************************/
var_AddCallback(p_playlist, "item-change", ItemChanged, intf);
var_AddCallback(p_playlist, "playlist-item-append", PlaylistChanged, intf);
+ vlc_cleanup_push(cleanup_run, data);
while (!sys->exit) {
UpdateInput(sys, p_playlist);
Redraw(intf);
HandleKey(intf);
}
+ vlc_cleanup_pop();
- var_DelCallback(p_playlist, "intf-change", PlaylistChanged, intf);
- var_DelCallback(p_playlist, "item-change", ItemChanged, intf);
- var_DelCallback(p_playlist, "playlist-item-append", PlaylistChanged, intf);
return NULL;
}
{
intf_sys_t *sys = ((intf_thread_t*)p_this)->p_sys;
+ vlc_cancel(sys->thread);
vlc_join(sys->thread, NULL);
PlaylistDestroy(sys);