github.com/SkycoinProject/gomobile@v0.0.0-20190312151609-d3739f865fa6/exp/audio/al/alc_notandroid.go (about)

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // +build darwin linux,!android windows
     6  
     7  package al
     8  
     9  /*
    10  #cgo darwin   CFLAGS:  -DGOOS_darwin
    11  #cgo linux    CFLAGS:  -DGOOS_linux
    12  #cgo windows  CFLAGS:  -DGOOS_windows
    13  #cgo darwin   LDFLAGS: -framework OpenAL
    14  #cgo linux    LDFLAGS: -lopenal
    15  #cgo windows  LDFLAGS: -lOpenAL32
    16  
    17  #ifdef GOOS_darwin
    18  #include <stdlib.h>
    19  #include <OpenAL/alc.h>
    20  #endif
    21  
    22  #ifdef GOOS_linux
    23  #include <stdlib.h>
    24  #include <AL/alc.h>
    25  #endif
    26  
    27  #ifdef GOOS_windows
    28  #include <windows.h>
    29  #include <stdlib.h>
    30  #include <AL/alc.h>
    31  #endif
    32  */
    33  import "C"
    34  import "unsafe"
    35  
    36  /*
    37  On Ubuntu 14.04 'Trusty', you may have to install these libraries:
    38  sudo apt-get install libopenal-dev
    39  */
    40  
    41  func alcGetError(d unsafe.Pointer) int32 {
    42  	dev := (*C.ALCdevice)(d)
    43  	return int32(C.alcGetError(dev))
    44  }
    45  
    46  func alcOpenDevice(name string) unsafe.Pointer {
    47  	n := C.CString(name)
    48  	defer C.free(unsafe.Pointer(n))
    49  
    50  	return (unsafe.Pointer)(C.alcOpenDevice((*C.ALCchar)(unsafe.Pointer(n))))
    51  }
    52  
    53  func alcCloseDevice(d unsafe.Pointer) bool {
    54  	dev := (*C.ALCdevice)(d)
    55  	return C.alcCloseDevice(dev) == C.ALC_TRUE
    56  }
    57  
    58  func alcCreateContext(d unsafe.Pointer, attrs []int32) unsafe.Pointer {
    59  	dev := (*C.ALCdevice)(d)
    60  	return (unsafe.Pointer)(C.alcCreateContext(dev, nil))
    61  }
    62  
    63  func alcMakeContextCurrent(c unsafe.Pointer) bool {
    64  	ctx := (*C.ALCcontext)(c)
    65  	return C.alcMakeContextCurrent(ctx) == C.ALC_TRUE
    66  }
    67  
    68  func alcDestroyContext(c unsafe.Pointer) {
    69  	C.alcDestroyContext((*C.ALCcontext)(c))
    70  }