From f762e8034f838b6087f6ea2e2010d3a23415f53c Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 23 Jan 2018 16:28:56 +0100 Subject: [PATCH] test/NullMixerListener: new class to fix -Wnull-dereference --- Makefile.am | 2 ++ test/NullMixerListener.hxx | 30 ++++++++++++++++++++++++++++++ test/read_mixer.cxx | 4 +++- test/run_output.cxx | 11 ++++++++--- 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 test/NullMixerListener.hxx diff --git a/Makefile.am b/Makefile.am index 5e468aa42..409f784e1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2159,6 +2159,7 @@ test_run_output_LDADD = $(MPD_LIBS) \ libutil.a test_run_output_SOURCES = test/run_output.cxx \ test/ScopeIOThread.hxx \ + test/NullMixerListener.hxx \ src/Log.cxx src/LogBackend.cxx \ src/IOThread.cxx \ src/output/Domain.cxx \ @@ -2182,6 +2183,7 @@ test_read_mixer_LDADD = \ libsystem.a \ libutil.a test_read_mixer_SOURCES = test/read_mixer.cxx \ + test/NullMixerListener.hxx \ src/Log.cxx src/LogBackend.cxx \ src/mixer/MixerControl.cxx \ src/filter/FilterPlugin.cxx \ diff --git a/test/NullMixerListener.hxx b/test/NullMixerListener.hxx new file mode 100644 index 000000000..ed3986f41 --- /dev/null +++ b/test/NullMixerListener.hxx @@ -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 diff --git a/test/read_mixer.cxx b/test/read_mixer.cxx index 4c7efabe3..9919b9c4c 100644 --- a/test/read_mixer.cxx +++ b/test/read_mixer.cxx @@ -18,6 +18,7 @@ */ #include "config.h" +#include "NullMixerListener.hxx" #include "mixer/MixerControl.hxx" #include "mixer/MixerList.hxx" #include "filter/FilterRegistry.hxx" @@ -50,9 +51,10 @@ try { EventLoop event_loop; + NullMixerListener mixer_listener; Mixer *mixer = mixer_new(event_loop, alsa_mixer_plugin, *(AudioOutput *)nullptr, - *(MixerListener *)nullptr, + mixer_listener, ConfigBlock()); mixer_open(mixer); diff --git a/test/run_output.cxx b/test/run_output.cxx index 43272591c..27e65cbc9 100644 --- a/test/run_output.cxx +++ b/test/run_output.cxx @@ -18,6 +18,7 @@ */ #include "config.h" +#include "NullMixerListener.hxx" #include "output/Internal.hxx" #include "output/OutputPlugin.hxx" #include "output/Client.hxx" @@ -64,7 +65,9 @@ filter_plugin_by_name(gcc_unused const char *name) noexcept } 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 auto *param = config_find_block(ConfigBlockOption::AUDIO_OUTPUT, @@ -74,7 +77,7 @@ load_audio_output(EventLoop &event_loop, AudioOutputClient &client, name); return audio_output_new(event_loop, ReplayGainConfig(), *param, - *(MixerListener *)nullptr, + mixer_listener, client); } @@ -144,8 +147,10 @@ try { /* initialize the audio output */ + NullMixerListener mixer_listener; 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 */