Guard empty OpenAL capture buffers
This commit is contained in:
committed by
Brandon McGinty
parent
208c986d56
commit
6b7e3cdc20
@@ -167,6 +167,9 @@ return nil
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Device) GetIntegerv(param uint32, size uint32) (result []int32) {
|
func (self *Device) GetIntegerv(param uint32, size uint32) (result []int32) {
|
||||||
|
if size == 0 {
|
||||||
|
return []int32{}
|
||||||
|
}
|
||||||
result = make([]int32, size)
|
result = make([]int32, size)
|
||||||
C.walcGetIntegerv(self.cHandle(), C.ALCenum(param), C.ALCsizei(size), unsafe.Pointer(&result[0]))
|
C.walcGetIntegerv(self.cHandle(), C.ALCenum(param), C.ALCsizei(size), unsafe.Pointer(&result[0]))
|
||||||
return
|
return
|
||||||
@@ -213,10 +216,16 @@ func (self *CaptureDevice) CaptureStop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *CaptureDevice) CaptureTo(data []byte) {
|
func (self *CaptureDevice) CaptureTo(data []byte) {
|
||||||
|
if len(data) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))/self.sampleSize))
|
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))/self.sampleSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *CaptureDevice) CaptureToInt16(data []int16) {
|
func (self *CaptureDevice) CaptureToInt16(data []int16) {
|
||||||
|
if len(data) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))*2/self.sampleSize))
|
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))*2/self.sampleSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,10 +238,16 @@ func (self *CaptureDevice) CaptureMono16To(data []int16) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *CaptureDevice) CaptureStereo8To(data [][2]byte) {
|
func (self *CaptureDevice) CaptureStereo8To(data [][2]byte) {
|
||||||
|
if len(data) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))*2/self.sampleSize))
|
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))*2/self.sampleSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *CaptureDevice) CaptureStereo16To(data [][2]int16) {
|
func (self *CaptureDevice) CaptureStereo16To(data [][2]int16) {
|
||||||
|
if len(data) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))*4/self.sampleSize))
|
C.alcCaptureSamples(self.cHandle(), unsafe.Pointer(&data[0]), C.ALCsizei(uint32(len(data))*4/self.sampleSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,15 @@ func TestEmptySliceAPIsDoNotPanic(t *testing.T) {
|
|||||||
source.Getiv(0, nil)
|
source.Getiv(0, nil)
|
||||||
source.QueueBuffers(nil)
|
source.QueueBuffers(nil)
|
||||||
source.UnqueueBuffers(nil)
|
source.UnqueueBuffers(nil)
|
||||||
|
var device openal.Device
|
||||||
|
if got := device.GetIntegerv(0, 0); len(got) != 0 {
|
||||||
|
t.Fatalf("got %d integers", len(got))
|
||||||
|
}
|
||||||
|
var capture openal.CaptureDevice
|
||||||
|
capture.CaptureTo(nil)
|
||||||
|
capture.CaptureToInt16(nil)
|
||||||
|
capture.CaptureStereo8To(nil)
|
||||||
|
capture.CaptureStereo16To(nil)
|
||||||
var listener openal.Listener
|
var listener openal.Listener
|
||||||
listener.Setfv(0, nil)
|
listener.Setfv(0, nil)
|
||||||
listener.Setiv(0, nil)
|
listener.Setiv(0, nil)
|
||||||
|
|||||||
Reference in New Issue
Block a user