Merge pull request #387 from JupiterRider/master
TraceLog and TraceLogCallback fixes
This commit is contained in:
commit
e824a9b663
3 changed files with 22 additions and 6 deletions
|
@ -5,6 +5,7 @@ package rl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/ebitengine/purego"
|
"github.com/ebitengine/purego"
|
||||||
|
@ -16,6 +17,15 @@ const (
|
||||||
requiredVersion = "5.0"
|
requiredVersion = "5.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var wvsprintfA uintptr
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
handle, err := windows.LoadLibrary("user32.dll")
|
||||||
|
if err == nil {
|
||||||
|
wvsprintfA, _ = windows.GetProcAddress(handle, "wvsprintfA")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// loadLibrary loads the raylib dll and panics on error
|
// loadLibrary loads the raylib dll and panics on error
|
||||||
func loadLibrary() uintptr {
|
func loadLibrary() uintptr {
|
||||||
handle, err := windows.LoadLibrary(libname)
|
handle, err := windows.LoadLibrary(libname)
|
||||||
|
@ -37,7 +47,14 @@ func loadLibrary() uintptr {
|
||||||
}
|
}
|
||||||
|
|
||||||
func traceLogCallbackWrapper(fn TraceLogCallbackFun) uintptr {
|
func traceLogCallbackWrapper(fn TraceLogCallbackFun) uintptr {
|
||||||
return purego.NewCallback(func(logLevel int32, text *byte) uintptr {
|
return purego.NewCallback(func(logLevel int32, text *byte, args unsafe.Pointer) uintptr {
|
||||||
|
if wvsprintfA != 0 {
|
||||||
|
var buffer [1024]byte // Max size is 1024 (see https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-wvsprintfa)
|
||||||
|
_, _, errno := syscall.SyscallN(wvsprintfA, uintptr(unsafe.Pointer(&buffer[0])), uintptr(unsafe.Pointer(text)), uintptr(args))
|
||||||
|
if errno == 0 {
|
||||||
|
text = &buffer[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
fn(int(logLevel), windows.BytePtrToString(text))
|
fn(int(logLevel), windows.BytePtrToString(text))
|
||||||
return 0
|
return 0
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
package rl
|
package rl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"image"
|
"image"
|
||||||
"image/color"
|
"image/color"
|
||||||
"os"
|
"os"
|
||||||
|
@ -121,7 +122,7 @@ var unloadRandomSequence func(sequence *int32)
|
||||||
var takeScreenshot func(fileName string)
|
var takeScreenshot func(fileName string)
|
||||||
var setConfigFlags func(flags uint32)
|
var setConfigFlags func(flags uint32)
|
||||||
var openURL func(url string)
|
var openURL func(url string)
|
||||||
var traceLog func(logLevel int32, text string, args ...any)
|
var traceLog func(logLevel int32, text string)
|
||||||
var setTraceLogLevel func(logLevel int32)
|
var setTraceLogLevel func(logLevel int32)
|
||||||
var memAlloc func(size uint32) unsafe.Pointer
|
var memAlloc func(size uint32) unsafe.Pointer
|
||||||
var memRealloc func(ptr unsafe.Pointer, size uint32) unsafe.Pointer
|
var memRealloc func(ptr unsafe.Pointer, size uint32) unsafe.Pointer
|
||||||
|
@ -1556,7 +1557,7 @@ func OpenURL(url string) {
|
||||||
|
|
||||||
// TraceLog - Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
|
// TraceLog - Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
|
||||||
func TraceLog(logLevel TraceLogLevel, text string, args ...any) {
|
func TraceLog(logLevel TraceLogLevel, text string, args ...any) {
|
||||||
traceLog(int32(logLevel), text, args...)
|
traceLog(int32(logLevel), fmt.Sprintf(text, args...))
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetTraceLogLevel - Set the current threshold (minimum) log level
|
// SetTraceLogLevel - Set the current threshold (minimum) log level
|
||||||
|
@ -1580,8 +1581,6 @@ func MemFree(ptr unsafe.Pointer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetTraceLogCallback - Set custom trace log
|
// SetTraceLogCallback - Set custom trace log
|
||||||
//
|
|
||||||
// REVIEW NEEDED! 2023-11-15 JupiterRider: The argument list paramter isn't impelmented yet.
|
|
||||||
func SetTraceLogCallback(fn TraceLogCallbackFun) {
|
func SetTraceLogCallback(fn TraceLogCallbackFun) {
|
||||||
setTraceLogCallback(traceLogCallbackWrapper(fn))
|
setTraceLogCallback(traceLogCallbackWrapper(fn))
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include <stdio.h> // Required for: vprintf()
|
#include <stdio.h> // Required for: vprintf()
|
||||||
#include <string.h> // Required for: strcpy(), strcat()
|
#include <string.h> // Required for: strcpy(), strcat()
|
||||||
|
|
||||||
#define MAX_TRACELOG_BUFFER_SIZE 128 // As defined in utils.c from raylib
|
#define MAX_TRACELOG_BUFFER_SIZE 256 // As defined in utils.c from raylib
|
||||||
|
|
||||||
void rayLogWrapperCallback(int logType, const char *text, va_list args) {
|
void rayLogWrapperCallback(int logType, const char *text, va_list args) {
|
||||||
char buffer[MAX_TRACELOG_BUFFER_SIZE] = { 0 };
|
char buffer[MAX_TRACELOG_BUFFER_SIZE] = { 0 };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue