mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-27 04:08:53 +01:00
e6a17e58c9
Updates #1162
53 lines
2.1 KiB
Go
53 lines
2.1 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-FileCopyrightText: 2009-2016 Camilla Löwy <elmindreda@glfw.org>
|
|
// SPDX-FileCopyrightText: 2024 The Ebitengine Authors
|
|
|
|
package glfw
|
|
|
|
// #include "internal_unix.h"
|
|
import "C"
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/ebitengine/purego"
|
|
)
|
|
|
|
type mach_timebase_info_data_t struct {
|
|
numer uint32
|
|
denom uint32
|
|
}
|
|
|
|
var mach_absolute_time func() uint64
|
|
var mach_timebase_info func(*mach_timebase_info_data_t)
|
|
var pthread_key_create func(key *C.pthread_key_t, destructor uintptr) int32
|
|
var pthread_key_delete func(key C.pthread_key_t) int32
|
|
var pthread_getspecific func(key C.pthread_key_t) uintptr
|
|
var pthread_setspecific func(key C.pthread_key_t, value uintptr) int32
|
|
var pthread_mutex_init func(mutex *C.pthread_mutex_t, attr *C.pthread_mutexattr_t) int32
|
|
var pthread_mutex_destroy func(mutex *C.pthread_mutex_t) int32
|
|
var pthread_mutex_lock func(mutex *C.pthread_mutex_t) int32
|
|
var pthread_mutex_unlock func(mutex *C.pthread_mutex_t) int32
|
|
|
|
// TODO: replace with Go error handling
|
|
var _glfwInputError func(code int32, format *C.char)
|
|
|
|
func init() {
|
|
purego.RegisterLibFunc(&_glfwInputError, purego.RTLD_DEFAULT, "_glfwInputError")
|
|
|
|
libSystem, err := purego.Dlopen("/usr/lib/libSystem.B.dylib", purego.RTLD_LAZY|purego.RTLD_GLOBAL)
|
|
if err != nil {
|
|
panic(fmt.Errorf("glfw: failed to dlopen: %w", err))
|
|
}
|
|
purego.RegisterLibFunc(&mach_absolute_time, libSystem, "mach_absolute_time")
|
|
purego.RegisterLibFunc(&mach_timebase_info, libSystem, "mach_timebase_info")
|
|
purego.RegisterLibFunc(&pthread_key_create, libSystem, "pthread_key_create")
|
|
purego.RegisterLibFunc(&pthread_key_delete, libSystem, "pthread_key_delete")
|
|
purego.RegisterLibFunc(&pthread_getspecific, libSystem, "pthread_getspecific")
|
|
purego.RegisterLibFunc(&pthread_setspecific, libSystem, "pthread_setspecific")
|
|
purego.RegisterLibFunc(&pthread_mutex_init, libSystem, "pthread_mutex_init")
|
|
purego.RegisterLibFunc(&pthread_mutex_destroy, libSystem, "pthread_mutex_destroy")
|
|
purego.RegisterLibFunc(&pthread_mutex_lock, libSystem, "pthread_mutex_lock")
|
|
purego.RegisterLibFunc(&pthread_mutex_unlock, libSystem, "pthread_mutex_unlock")
|
|
}
|