Revision: 39120
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39120
Author:   nexyon
Date:     2011-08-07 06:22:50 +0000 (Sun, 07 Aug 2011)
Log Message:
-----------
3D Audio GSoC:
Added a NULLHandle to prevent a crash in Python API when the device is the 
NULLDevice.

Modified Paths:
--------------
    branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.cpp
    branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.h

Modified: branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.cpp 
2011-08-07 05:24:58 UTC (rev 39119)
+++ branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.cpp 
2011-08-07 06:22:50 UTC (rev 39120)
@@ -32,10 +32,86 @@
 #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_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()

Modified: branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.h
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.h   
2011-08-07 05:24:58 UTC (rev 39119)
+++ branches/soc-2011-pepper/intern/audaspace/intern/AUD_NULLDevice.h   
2011-08-07 06:22:50 UTC (rev 39120)
@@ -34,12 +34,37 @@
 
 #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.

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to