test/NullMixerListener: new class to fix -Wnull-dereference

This commit is contained in:
Max Kellermann 2018-01-23 16:28:56 +01:00
parent bb1e369f30
commit f762e8034f
4 changed files with 43 additions and 4 deletions

View File

@ -2159,6 +2159,7 @@ test_run_output_LDADD = $(MPD_LIBS) \
libutil.a libutil.a
test_run_output_SOURCES = test/run_output.cxx \ test_run_output_SOURCES = test/run_output.cxx \
test/ScopeIOThread.hxx \ test/ScopeIOThread.hxx \
test/NullMixerListener.hxx \
src/Log.cxx src/LogBackend.cxx \ src/Log.cxx src/LogBackend.cxx \
src/IOThread.cxx \ src/IOThread.cxx \
src/output/Domain.cxx \ src/output/Domain.cxx \
@ -2182,6 +2183,7 @@ test_read_mixer_LDADD = \
libsystem.a \ libsystem.a \
libutil.a libutil.a
test_read_mixer_SOURCES = test/read_mixer.cxx \ test_read_mixer_SOURCES = test/read_mixer.cxx \
test/NullMixerListener.hxx \
src/Log.cxx src/LogBackend.cxx \ src/Log.cxx src/LogBackend.cxx \
src/mixer/MixerControl.cxx \ src/mixer/MixerControl.cxx \
src/filter/FilterPlugin.cxx \ src/filter/FilterPlugin.cxx \

View File

@ -0,0 +1,30 @@
/*
* Copyright 2003-2018 The Music Player Daemon Project
* http://www.musicpd.org
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef NULL_MIXER_LISTENER_HXX
#define NULL_MIXER_LISTENER_HXX
#include "mixer/Listener.hxx"
class NullMixerListener : public MixerListener {
public:
void OnMixerVolumeChanged(Mixer &, int) override {}
};
#endif

View File

@ -18,6 +18,7 @@
*/ */
#include "config.h" #include "config.h"
#include "NullMixerListener.hxx"
#include "mixer/MixerControl.hxx" #include "mixer/MixerControl.hxx"
#include "mixer/MixerList.hxx" #include "mixer/MixerList.hxx"
#include "filter/FilterRegistry.hxx" #include "filter/FilterRegistry.hxx"
@ -50,9 +51,10 @@ try {
EventLoop event_loop; EventLoop event_loop;
NullMixerListener mixer_listener;
Mixer *mixer = mixer_new(event_loop, alsa_mixer_plugin, Mixer *mixer = mixer_new(event_loop, alsa_mixer_plugin,
*(AudioOutput *)nullptr, *(AudioOutput *)nullptr,
*(MixerListener *)nullptr, mixer_listener,
ConfigBlock()); ConfigBlock());
mixer_open(mixer); mixer_open(mixer);

View File

@ -18,6 +18,7 @@
*/ */
#include "config.h" #include "config.h"
#include "NullMixerListener.hxx"
#include "output/Internal.hxx" #include "output/Internal.hxx"
#include "output/OutputPlugin.hxx" #include "output/OutputPlugin.hxx"
#include "output/Client.hxx" #include "output/Client.hxx"
@ -64,7 +65,9 @@ filter_plugin_by_name(gcc_unused const char *name) noexcept
} }
static AudioOutput * static AudioOutput *
load_audio_output(EventLoop &event_loop, AudioOutputClient &client, load_audio_output(EventLoop &event_loop,
NullMixerListener &mixer_listener,
AudioOutputClient &client,
const char *name) const char *name)
{ {
const auto *param = config_find_block(ConfigBlockOption::AUDIO_OUTPUT, const auto *param = config_find_block(ConfigBlockOption::AUDIO_OUTPUT,
@ -74,7 +77,7 @@ load_audio_output(EventLoop &event_loop, AudioOutputClient &client,
name); name);
return audio_output_new(event_loop, ReplayGainConfig(), *param, return audio_output_new(event_loop, ReplayGainConfig(), *param,
*(MixerListener *)nullptr, mixer_listener,
client); client);
} }
@ -144,8 +147,10 @@ try {
/* initialize the audio output */ /* initialize the audio output */
NullMixerListener mixer_listener;
DummyAudioOutputClient client; DummyAudioOutputClient client;
AudioOutput *ao = load_audio_output(event_loop, client, argv[2]); AudioOutput *ao = load_audio_output(event_loop, mixer_listener,
client, argv[2]);
/* parse the audio format */ /* parse the audio format */