Remove xine

This commit is contained in:
Jonas Kvinge 2020-07-16 00:59:46 +02:00
parent 1773283456
commit 07553476d4
28 changed files with 7 additions and 1476 deletions

View File

@ -80,7 +80,6 @@ commands:
libpulse-devel
gstreamer-devel
gstreamer-plugins-base-devel
libxine-devel
vlc-devel
libQt5Core-devel
libQt5Gui-devel

View File

@ -38,7 +38,6 @@ jobs:
libpulse-devel
gstreamer-devel
gstreamer-plugins-base-devel
libxine-devel
vlc-devel
libQt5Core-devel
libQt5Gui-devel
@ -109,7 +108,6 @@ jobs:
libpulse-devel
gstreamer-devel
gstreamer-plugins-base-devel
libxine-devel
vlc-devel
libQt5Core-devel
libQt5Gui-devel
@ -188,7 +186,6 @@ jobs:
libpulse-devel
gstreamer-devel
gstreamer-plugins-base-devel
libxine-devel
vlc-devel
libQt5Core-devel
libQt5Gui-devel
@ -269,7 +266,6 @@ jobs:
libpulse-devel
gstreamer-devel
gstreamer-plugins-base-devel
libxine-devel
vlc-devel
libQt5Core-devel
libQt5Gui-devel
@ -1036,7 +1032,6 @@ jobs:
-DENABLE_LIBGPOD=OFF
-DENABLE_IMOBILEDEVICE=OFF
-DENABLE_LIBMTP=OFF
-DENABLE_XINE=OFF
-DProtobuf_PROTOC_EXECUTABLE=/usr/src/strawberry-mxe/usr/x86_64-pc-linux-gnu/bin/protoc
- name: Run Make
@ -1049,7 +1044,7 @@ jobs:
- name: Create directories
working-directory: build
run: mkdir -p gio-modules platforms sqldrivers imageformats styles gstreamer-plugins xine-plugins nsisplugins
run: mkdir -p gio-modules platforms sqldrivers imageformats styles gstreamer-plugins nsisplugins
- name: Copy GIO modules
working-directory: build

View File

@ -118,7 +118,6 @@ pkg_check_modules(GSTREAMER_AUDIO gstreamer-audio-1.0)
pkg_check_modules(GSTREAMER_APP gstreamer-app-1.0)
pkg_check_modules(GSTREAMER_TAG gstreamer-tag-1.0)
pkg_check_modules(GSTREAMER_PBUTILS gstreamer-pbutils-1.0)
pkg_check_modules(LIBXINE libxine)
pkg_check_modules(LIBVLC libvlc)
pkg_check_modules(SQLITE REQUIRED sqlite3>=3.9)
pkg_check_modules(LIBPULSE libpulse)
@ -258,10 +257,6 @@ optional_component(GSTREAMER ON "Engine: GStreamer backend"
DEPENDS "gstreamer-pbutils-1.0" GSTREAMER_PBUTILS_FOUND
)
optional_component(XINE ON "Engine: Xine backend"
DEPENDS "libxine" LIBXINE_FOUND
)
optional_component(VLC ON "Engine: VLC backend"
DEPENDS "libvlc" LIBVLC_FOUND
)
@ -401,8 +396,8 @@ add_custom_target(uninstall
# Show a summary of what we have enabled
summary_show()
if(NOT HAVE_GSTREAMER AND NOT HAVE_XINE AND NOT HAVE_VLC)
message(FATAL_ERROR "You need to have either GStreamer, Xine or VLC to compile!")
if(NOT HAVE_GSTREAMER AND NOT HAVE_VLC)
message(FATAL_ERROR "You need to have either GStreamer or VLC to compile!")
elseif(NOT HAVE_GSTREAMER)
message(WARNING "GStreamer is the only engine that is fully implemented. Using other engines is possible but not recommended.")
endif()

View File

@ -70,7 +70,7 @@ To build Strawberry from source you need the following installed on your system
* [ALSA library (linux)](https://www.alsa-project.org/)
* [DBus (linux)](https://www.freedesktop.org/wiki/Software/dbus/)
* [PulseAudio (linux optional)](https://www.freedesktop.org/wiki/Software/PulseAudio/?)
* [GStreamer](https://gstreamer.freedesktop.org/), [Xine](https://www.xine-project.org) or [VLC](https://www.videolan.org)
* [GStreamer](https://gstreamer.freedesktop.org/) or [VLC](https://www.videolan.org)
* [GnuTLS](https://www.gnutls.org/)
Optional dependencies:
@ -81,7 +81,7 @@ Optional dependencies:
* iPhone, iPod Touch, iPad and Apple TV devices: [libimobiledevice, libplist and libusbmuxd](https://www.libimobiledevice.org/)
* Moodbar: [fftw3](http://www.fftw.org/)
Either GStreamer, Xine or VLC engine is required, but only GStreamer is fully implemented so far.
Either GStreamer or VLC engine is required, but only GStreamer is fully implemented so far.
You should also install the gstreamer plugins base and good, and optionally bad and ugly.
### :wrench: Compiling from source

View File

@ -81,7 +81,6 @@
<file>icons/128x128/view-refresh.png</file>
<file>icons/128x128/library-music.png</file>
<file>icons/128x128/vlc.png</file>
<file>icons/128x128/xine.png</file>
<file>icons/128x128/zoom-in.png</file>
<file>icons/128x128/zoom-out.png</file>
<file>icons/128x128/scrobble.png</file>
@ -172,7 +171,6 @@
<file>icons/64x64/view-refresh.png</file>
<file>icons/64x64/library-music.png</file>
<file>icons/64x64/vlc.png</file>
<file>icons/64x64/xine.png</file>
<file>icons/64x64/zoom-in.png</file>
<file>icons/64x64/zoom-out.png</file>
<file>icons/64x64/scrobble.png</file>
@ -267,7 +265,6 @@
<file>icons/48x48/view-refresh.png</file>
<file>icons/48x48/library-music.png</file>
<file>icons/48x48/vlc.png</file>
<file>icons/48x48/xine.png</file>
<file>icons/48x48/zoom-in.png</file>
<file>icons/48x48/zoom-out.png</file>
<file>icons/48x48/scrobble.png</file>
@ -362,7 +359,6 @@
<file>icons/32x32/view-refresh.png</file>
<file>icons/32x32/library-music.png</file>
<file>icons/32x32/vlc.png</file>
<file>icons/32x32/xine.png</file>
<file>icons/32x32/zoom-in.png</file>
<file>icons/32x32/zoom-out.png</file>
<file>icons/32x32/scrobble.png</file>
@ -457,7 +453,6 @@
<file>icons/22x22/view-refresh.png</file>
<file>icons/22x22/library-music.png</file>
<file>icons/22x22/vlc.png</file>
<file>icons/22x22/xine.png</file>
<file>icons/22x22/zoom-in.png</file>
<file>icons/22x22/zoom-out.png</file>
<file>icons/22x22/scrobble.png</file>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

15
debian/copyright vendored
View File

@ -213,21 +213,6 @@ Copyright: 2017, 2018, Jonas Kvinge <jonas@jkvinge.net>
2003-2005, Mark Kretschmann <markey@web.de>
License: GPL-2+
Files: src/engine/xineengine.cpp
src/engine/xineengine.h
Copyright: 2017, 2018, Jonas Kvinge <jonas@jkvinge.net>
2005, Ian Monroe <ian@monroe.nu>
2005, Christophe Thommeret <hftom@free.fr>
2005, 2006, Mark Kretschmann <markey@web.de>
2004, 2005, Max Howell <max.howell@methylblue.com>
2003, 2004, J. Kofler <kaffeine@gmx.net>
License: GPL-2+
Files: src/engine/xinescope.c
src/engine/xinescope.h
Copyright: 2004, Max Howell <max.howell@methylblue.com>
License: GPL-2+
Files: src/widgets/fancytabwidget.cpp
src/widgets/fancytabwidget.h
Copyright: 2018, Vikram Ambrose <ambroseworks@gmail.com>

View File

@ -154,12 +154,6 @@ class InstallNameToolError(Error):
class CouldNotFindGstreamerPluginError(Error):
pass
class CouldNotFindXinePluginError(Error):
pass
class CouldNotFindVLCPluginError(Error):
pass
if len(sys.argv) < 2:
print 'Usage: %s <bundle.app>' % sys.argv[0]
@ -433,15 +427,6 @@ def FixFrameworkInstallPath(library_path, library):
FixInstallPath(library_path, library, new_path)
def FindXinePlugin(name):
for path in XINEPLUGIN_SEARCH_PATH:
if os.path.exists(path):
for dir, dirs, files in os.walk(path):
if name in files:
return os.path.join(dir, name)
raise CouldNotFindXinePluginError(name)
def FindQtPlugin(name):
for path in QT_PLUGINS_SEARCH_PATH:
if os.path.exists(path):

View File

@ -23,7 +23,6 @@ depends=(
gstreamer
gst-plugins-base
gst-plugins-good
xine-lib
vlc
chromaprint
libgpod

View File

@ -73,7 +73,6 @@ BuildRequires: pkgconfig(libmtp)
BuildRequires: pkgconfig(libnotify)
BuildRequires: pkgconfig(libudf)
%if 0%{?suse_version} || 0%{?fedora_version}
BuildRequires: pkgconfig(libxine)
BuildRequires: pkgconfig(libvlc)
%endif

View File

@ -99,7 +99,6 @@ parts:
- libqt5x11extras5-dev
- libgstreamer1.0-dev
- libgstreamer-plugins-base1.0-dev
- libxine2-dev
- libvlc-dev
- libcdio-dev
- libgpod-dev
@ -135,7 +134,6 @@ parts:
- libimobiledevice6
- libplist3
- libusbmuxd4
- libxine2
- libvlc5
- libvlccore9
- libtag1v5
@ -144,7 +142,6 @@ parts:
- libx11-6
- libxcomposite1
- libxcursor1
- libxinerama1
- libxrandr2
- libdb5.3
- libglu1

View File

@ -533,12 +533,6 @@ optional_source(HAVE_GSTREAMER
HEADERS engine/gststartup.h engine/gstengine.h engine/gstenginepipeline.h engine/gstelementdeleter.h
)
# Xine
optional_source(HAVE_XINE
SOURCES engine/xineengine.cpp engine/xinescope.c
HEADERS engine/xineengine.h
)
# VLC
optional_source(HAVE_VLC
SOURCES engine/vlcengine.cpp
@ -944,10 +938,6 @@ if(HAVE_GSTREAMER)
)
endif(HAVE_GSTREAMER)
if(HAVE_XINE)
link_directories(${LIBXINE_LIBRARY_DIRS})
endif()
if(HAVE_VLC)
link_directories(${LIBVLC_LIBRARY_DIRS})
endif()
@ -1067,11 +1057,6 @@ if(HAVE_MOODBAR)
target_link_libraries(strawberry_lib PRIVATE gstmoodbar)
endif()
if(HAVE_XINE)
target_include_directories(strawberry_lib SYSTEM PRIVATE ${LIBXINE_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBXINE_LIBRARIES})
endif()
if(HAVE_VLC)
target_include_directories(strawberry_lib SYSTEM PRIVATE ${LIBVLC_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBVLC_LIBRARIES})

View File

@ -99,7 +99,7 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
void AnalyzerContainer::mouseReleaseEvent(QMouseEvent *e) {
if (engine_->type() != Engine::EngineType::GStreamer && engine_->type() != Engine::EngineType::Xine) return;
if (engine_->type() != Engine::EngineType::GStreamer) return;
if (e->button() == Qt::RightButton) {
context_menu_->popup(e->globalPos());

View File

@ -43,7 +43,6 @@
#cmakedefine HAVE_GSTREAMER
#cmakedefine HAVE_VLC
#cmakedefine HAVE_XINE
#cmakedefine HAVE_SUBSONIC
#cmakedefine HAVE_TIDAL

View File

@ -129,7 +129,6 @@ static const QMap<QString, IconProperties> iconmapper_ = {
{ "view-refresh", { {}} },
{ "library-music", { {"vinyl"}} },
{ "vlc", { {}} },
{ "xine", { {}} },
{ "zoom-in", { {}} },
{ "zoom-out", { {}, 0, 0 } }

View File

@ -1058,7 +1058,7 @@ void MainWindow::ExitFinished() {
void MainWindow::EngineChanged(Engine::EngineType enginetype) {
ui_->action_equalizer->setEnabled(enginetype == Engine::EngineType::GStreamer || enginetype == Engine::EngineType::Xine);
ui_->action_equalizer->setEnabled(enginetype == Engine::EngineType::GStreamer);
#ifdef Q_OS_WIN
ui_->action_open_cd->setEnabled(false);
ui_->action_open_cd->setVisible(false);

View File

@ -51,9 +51,6 @@
# include "engine/gstengine.h"
# include "engine/gststartup.h"
#endif
#ifdef HAVE_XINE
# include "engine/xineengine.h"
#endif
#ifdef HAVE_VLC
# include "engine/vlcengine.h"
#endif
@ -125,12 +122,6 @@ Engine::EngineType Player::CreateEngine(Engine::EngineType enginetype) {
break;
}
#endif
#ifdef HAVE_XINE
case Engine::Xine:
use_enginetype=Engine::Xine;
engine_.reset(new XineEngine(app_->task_manager()));
break;
#endif
#ifdef HAVE_VLC
case Engine::VLC:
use_enginetype=Engine::VLC;

View File

@ -28,7 +28,6 @@ namespace Engine {
Engine::EngineType EngineTypeFromName(QString enginename) {
QString lower = enginename.toLower();
if (lower == "gstreamer") return Engine::GStreamer;
else if (lower == "xine") return Engine::Xine;
else if (lower == "vlc") return Engine::VLC;
else return Engine::None;
}
@ -36,7 +35,6 @@ Engine::EngineType EngineTypeFromName(QString enginename) {
QString EngineName(Engine::EngineType enginetype) {
switch (enginetype) {
case Engine::GStreamer: return QString("gstreamer");
case Engine::Xine: return QString("xine");
case Engine::VLC: return QString("vlc");
case Engine::None:
default: return QString("None");
@ -46,7 +44,6 @@ QString EngineName(Engine::EngineType enginetype) {
QString EngineDescription(Engine::EngineType enginetype) {
switch (enginetype) {
case Engine::GStreamer: return QString("GStreamer");
case Engine::Xine: return QString("Xine");
case Engine::VLC: return QString("VLC");
case Engine::None:
default: return QString("None");

File diff suppressed because it is too large Load Diff

View File

@ -1,154 +0,0 @@
/***************************************************************************
* Copyright (C) 2017-2018 Jonas Kvinge <jonas@jkvinge.net> *
* Copyright (C) 2005 Christophe Thommeret <hftom@free.fr> *
* (C) 2005 Ian Monroe <ian@monroe.nu> *
* (C) 2005-2006 Mark Kretschmann <markey@web.de> *
* (C) 2004-2005 Max Howell <max.howell@methylblue.com> *
* (C) 2003-2004 J. Kofler <kaffeine@gmx.net> *
* *
* 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 *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef XINEENGINE_H
#define XINEENGINE_H
#include "config.h"
#ifndef XINE_ENGINE_INTERNAL
# define XINE_ENGINE_INTERNAL
#endif
#include <memory>
#include <cstdint>
#include <sys/types.h>
#include <xine.h>
#include <QtGlobal>
#include <QObject>
#include <QMutex>
#include <QThread>
#include <QList>
#include <QVariant>
#include <QString>
#include <QUrl>
#include "engine_fwd.h"
#include "enginebase.h"
class TaskManager;
class PruneScopeThread;
class XineEngine : public Engine::Base {
Q_OBJECT
public:
explicit XineEngine(TaskManager *task_manager);
~XineEngine() override;
bool Init() override;
Engine::State state() const override;
bool Load(const QUrl &stream_url, const QUrl &original_url, Engine::TrackChangeFlags change, bool force_stop_at_end, quint64 beginning_nanosec, qint64 end_nanosec) override;
bool Play(quint64 offset_nanosec) override;
void Stop(bool stop_after = false) override;
void Pause() override;
void Unpause() override;
void Seek(quint64 offset_nanosec) override;
void SetVolumeSW(uint) override;
qint64 position_nanosec() const override;
qint64 length_nanosec() const override;
const Engine::Scope& scope(int chunk_length);
OutputDetailsList GetOutputsList() const override;
bool ValidOutput(const QString &output) override;
QString DefaultOutput() override { return "auto"; }
bool CustomDeviceSupport(const QString &output) override;
bool ALSADeviceSupport(const QString &output) override;
void ReloadSettings() override;
bool CanDecode(const QUrl &);
void SetEqualizerEnabled(bool enabled) override;
void SetEqualizerParameters(int preamp, const QList<int>&) override;
// Simple accessors
xine_stream_t *stream() { return stream_; }
float preamp() { return preamp_; }
private:
static const char *kAutoOutput;
QString current_output_;
QVariant current_device_;
xine_t *xine_;
xine_audio_port_t *audioport_;
xine_stream_t *stream_;
xine_event_queue_t *eventqueue_;
xine_post_t *post_;
std::unique_ptr<PruneScopeThread> prune_;
float preamp_;
QUrl stream_url_;
QUrl original_url_;
bool have_metadata_;
uint log_buffer_count_ = 0;
uint log_scope_call_count_ = 1; // Prevent divideByZero
uint log_no_suitable_buffer_ = 0;
int int_preamp_;
QMutex init_mutex_;
int64_t current_vpts_;
QList<int> equalizer_gains_;
mutable Engine::SimpleMetaBundle current_bundle_;
void SetEnvironment();
void Cleanup();
void SetDevice();
bool OpenAudioDriver();
void CloseAudioDriver();
bool CreateStream();
void CloseStream();
bool EnsureStream();
uint length() const;
uint position() const;
static void XineEventListener(void*, const xine_event_t*);
void DetermineAndShowErrorMessage();
Engine::SimpleMetaBundle FetchMetaData() const;
PluginDetailsList GetPluginList() const;
private slots:
void PruneScope();
signals:
void InfoMessage(const QString&);
};
class PruneScopeThread : public QThread {
public:
PruneScopeThread(XineEngine *parent);
protected:
void run();
private:
XineEngine *engine_;
};
#endif

View File

@ -1,173 +0,0 @@
/* Author: Max Howell <max.howell@methylblue.com>, (C) 2004
Copyright: See COPYING file that comes with this distribution
This has to be a c file or for some reason it won't link! (GCC 3.4.1)
*/
/* need access to port_ticket */
#ifndef XINE_ENGINE_INTERNAL
# define XINE_ENGINE_INTERNAL
#endif
#include "config.h"
#include "xinescope.h"
#include <xine/post.h>
#include <xine/xine_internal.h>
typedef struct scope_plugin_s scope_plugin_t;
struct scope_plugin_s {
post_plugin_t post;
metronom_t metronom;
int channels;
MyNode *list;
};
/*************************
* post plugin functions *
*************************/
static int scope_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream, uint32_t bits, uint32_t rate, int mode) {
#define port ((post_audio_port_t*)port_gen)
#define this ((scope_plugin_t*)((post_audio_port_t*)port_gen)->post)
_x_post_rewire((post_plugin_t*)port->post);
_x_post_inc_usage(port);
port->stream = stream;
port->bits = bits;
port->rate = rate;
port->mode = mode;
this->channels = _x_ao_mode2channels(mode);
return port->original_port->open(port->original_port, stream, bits, rate, mode);
}
static void scope_port_close(xine_audio_port_t *port_gen, xine_stream_t *stream) {
MyNode *node;
/* ensure the buffers are deleted during the next XineEngine::timerEvent() */
for(node = this->list->next; node != this->list; node = node->next)
node->vpts = node->vpts_end = -1;
port->stream = NULL;
port->original_port->close(port->original_port, stream);
_x_post_dec_usage(port);
}
static void scope_port_put_buffer(xine_audio_port_t *port_gen, audio_buffer_t *buf, xine_stream_t *stream) {
/* FIXME With 8-bit samples the scope won't work correctly. For a special 8-bit code path, the sample size could be checked like this: if(port->bits == 8) */
const int num_samples = buf->num_frames * this->channels;
metronom_t *myMetronom = &this->metronom;
MyNode *new_node;
/* I keep my own metronom because xine wouldn't for some reason */
memcpy(&this->metronom, stream->metronom, sizeof(metronom_t));
new_node = (MyNode *) malloc(sizeof(MyNode));
new_node->vpts = myMetronom->got_audio_samples(myMetronom, buf->vpts, buf->num_frames);
new_node->num_frames = buf->num_frames;
new_node->mem = (int16_t *) malloc(num_samples * 2);
memcpy(new_node->mem, buf->mem, num_samples * 2);
{
int64_t
K = 32768; /*smpls = 1<<16 samples*/
K *= num_samples;
K /= (1<<16);
K += new_node->vpts;
new_node->vpts_end = K;
}
port->original_port->put_buffer(port->original_port, buf, stream);
/* Finally we should append the current buffer to the list
* This is thread-safe due to the way we handle the list in the GUI thread */
new_node->next = this->list->next;
this->list->next = new_node;
#undef port
#undef this
}
static void scope_dispose(post_plugin_t *post) {
MyNode *list = ((scope_plugin_t*)post)->list;
MyNode *prev;
MyNode *node = list;
/* Free all elements of the list (a ring buffer) */
do {
prev = node->next;
free(node->mem);
free(node);
node = prev;
}
while(node != list);
free(post);
}
/************************
* plugin init function *
************************/
xine_post_t *scope_plugin_new(xine_t *xine, xine_audio_port_t *audio_target) {
scope_plugin_t *scope_plugin = (scope_plugin_t *) calloc(1, sizeof(scope_plugin_t));
post_plugin_t *post_plugin = (post_plugin_t *)scope_plugin;
{
post_in_t *input;
post_out_t *output;
post_audio_port_t *port;
_x_post_init(post_plugin, 1, 0);
port = _x_post_intercept_audio_port(post_plugin, audio_target, &input, &output);
port->new_port.open = scope_port_open;
port->new_port.close = scope_port_close;
port->new_port.put_buffer = scope_port_put_buffer;
post_plugin->xine_post.audio_input[0] = &port->new_port;
post_plugin->xine_post.type = PLUGIN_POST;
post_plugin->dispose = scope_dispose;
}
// code is straight from xine_init_post() can't use that function as it only dlopens the plugins and our plugin is statically linked in
post_plugin->running_ticket = xine->port_ticket;
post_plugin->xine = xine;
/* scope_plugin_t init */
scope_plugin->list = (MyNode *) calloc(1, sizeof(MyNode));
scope_plugin->list->next = scope_plugin->list;
return &post_plugin->xine_post;
}
MyNode *scope_plugin_list(void *post) {
return ((scope_plugin_t*)post)->list;
}
int scope_plugin_channels(void *post) {
return ((scope_plugin_t*)post)->channels;
}
metronom_t* scope_plugin_metronom(void *post) {
return &((scope_plugin_t*)post)->metronom;
}

View File

@ -1,45 +0,0 @@
/* Author: Max Howell <max.howell@methylblue.com>, (C) 2004
Copyright: See COPYING file that comes with this distribution
This has to be a c file or for some reason it won't link! (GCC 3.4.1)
*/
#ifndef XINESCOPE_H
#define XINESCOPE_H
/* need access to some stuff for scope time stamping */
#ifndef METRONOM_INTERNAL
# define METRONOM_INTERNAL
#endif
#include "config.h"
#include <sys/types.h>
#include <xine/metronom.h>
typedef struct my_node_s MyNode;
struct my_node_s {
MyNode *next;
int16_t *mem;
int num_frames;
int64_t vpts;
int64_t vpts_end;
};
#ifdef __cplusplus
extern "C"
{
#endif
xine_post_t *scope_plugin_new( xine_t*, xine_audio_port_t* );
/* we sacrifice type-safety here because some GCCs appear broken and choke on redefining the xine_post_t typedef */
MyNode *scope_plugin_list(void*);
int scope_plugin_channels(void*);
metronom_t *scope_plugin_metronom(void*);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -94,9 +94,6 @@ void BackendSettingsPage::Load() {
#ifdef HAVE_GSTREAMER
ui_->combobox_engine->addItem(IconLoader::Load("gstreamer"), EngineDescription(Engine::GStreamer), QVariant::fromValue(Engine::GStreamer));
#endif
#ifdef HAVE_XINE
ui_->combobox_engine->addItem(IconLoader::Load("xine"), EngineDescription(Engine::Xine), QVariant::fromValue(Engine::Xine));
#endif
#ifdef HAVE_VLC
ui_->combobox_engine->addItem(IconLoader::Load("vlc"), EngineDescription(Engine::VLC), QVariant::fromValue(Engine::VLC));
#endif