3D Audio GSoC:
authorJoerg Mueller <nexyon@gmail.com>
Sun, 7 Aug 2011 06:22:50 +0000 (06:22 +0000)
committerJoerg Mueller <nexyon@gmail.com>
Sun, 7 Aug 2011 06:22:50 +0000 (06:22 +0000)
Added a NULLHandle to prevent a crash in Python API when the device is the NULLDevice.

intern/audaspace/intern/AUD_NULLDevice.cpp
intern/audaspace/intern/AUD_NULLDevice.h

index 78a02d32cdd6986bb74d999067467cc4d1fd945f..dddb53fd00c7a9e2b22b49d8dd78d445852d6e56 100644 (file)
 #include <limits>
 
 #include "AUD_NULLDevice.h"
-#include "AUD_IReader.h"
-#include "AUD_IFactory.h"
-#include "AUD_IHandle.h"
+
+AUD_NULLDevice::AUD_NULLHandle::AUD_NULLHandle()
+{
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::pause()
+{
+       return false;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::resume()
+{
+       return false;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::stop()
+{
+       return false;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::getKeep()
+{
+       return false;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::setKeep(bool keep)
+{
+       return false;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::seek(float position)
+{
+       return false;
+}
+
+float AUD_NULLDevice::AUD_NULLHandle::getPosition()
+{
+       return 0.0f;
+}
+
+AUD_Status AUD_NULLDevice::AUD_NULLHandle::getStatus()
+{
+       return AUD_STATUS_INVALID;
+}
+
+float AUD_NULLDevice::AUD_NULLHandle::getVolume()
+{
+       return 0.0f;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::setVolume(float volume)
+{
+       return false;
+}
+
+float AUD_NULLDevice::AUD_NULLHandle::getPitch()
+{
+       return 0.0f;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::setPitch(float pitch)
+{
+       return false;
+}
+
+int AUD_NULLDevice::AUD_NULLHandle::getLoopCount()
+{
+       return 0;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::setLoopCount(int count)
+{
+       return false;
+}
+
+bool AUD_NULLDevice::AUD_NULLHandle::setStopCallback(stopCallback callback, void* data)
+{
+       return false;
+}
 
 AUD_NULLDevice::AUD_NULLDevice()
 {
@@ -55,12 +131,12 @@ AUD_DeviceSpecs AUD_NULLDevice::getSpecs() const
 
 AUD_Reference<AUD_IHandle> AUD_NULLDevice::play(AUD_Reference<AUD_IReader> reader, bool keep)
 {
-       return AUD_Reference<AUD_IHandle>();
+       return new AUD_NULLHandle();
 }
 
 AUD_Reference<AUD_IHandle> AUD_NULLDevice::play(AUD_Reference<AUD_IFactory> factory, bool keep)
 {
-       return AUD_Reference<AUD_IHandle>();
+       return new AUD_NULLHandle();
 }
 
 void AUD_NULLDevice::lock()
index 04458575f1cff7061a7461ecd4eedd7f902e0be5..59ef200f9347e0a6de88f155bf2104f0efd12b3d 100644 (file)
 
 #include "AUD_IReader.h"
 #include "AUD_IDevice.h"
+#include "AUD_IHandle.h"
 
 /**
  * This device plays nothing.
  */
 class AUD_NULLDevice : public AUD_IDevice
 {
+private:
+       class AUD_NULLHandle : public AUD_IHandle
+       {
+       public:
+
+               AUD_NULLHandle();
+
+               virtual ~AUD_NULLHandle() {}
+               virtual bool pause();
+               virtual bool resume();
+               virtual bool stop();
+               virtual bool getKeep();
+               virtual bool setKeep(bool keep);
+               virtual bool seek(float position);
+               virtual float getPosition();
+               virtual AUD_Status getStatus();
+               virtual float getVolume();
+               virtual bool setVolume(float volume);
+               virtual float getPitch();
+               virtual bool setPitch(float pitch);
+               virtual int getLoopCount();
+               virtual bool setLoopCount(int count);
+               virtual bool setStopCallback(stopCallback callback = 0, void* data = 0);
+       };
 public:
        /**
         * Creates a new NULL device.