mirror of
https://github.com/wolfpld/tracy
synced 2025-04-29 12:23:53 +00:00
Enable file selector on emscripten.
This commit is contained in:
parent
b369c784a6
commit
9f60b53729
@ -5,7 +5,7 @@ CFLAGS += -sUSE_FREETYPE=1 -pthread
|
|||||||
CXXFLAGS := $(CFLAGS) -std=c++17
|
CXXFLAGS := $(CFLAGS) -std=c++17
|
||||||
DEFINES += -DIMGUI_ENABLE_FREETYPE -DIMGUI_IMPL_OPENGL_ES2
|
DEFINES += -DIMGUI_ENABLE_FREETYPE -DIMGUI_IMPL_OPENGL_ES2
|
||||||
INCLUDES := -I../../../imgui -I$(HOME)/.emscripten_cache/sysroot/include/capstone
|
INCLUDES := -I../../../imgui -I$(HOME)/.emscripten_cache/sysroot/include/capstone
|
||||||
LIBS += -lpthread -ldl $(HOME)/.emscripten_cache/sysroot/lib/libcapstone.a -sUSE_GLFW=3 -sTOTAL_MEMORY=512mb -sWASM_BIGINT=1 -sPTHREAD_POOL_SIZE=4 -sEXPORTED_FUNCTIONS=_main,_nativeResize -sEXPORTED_RUNTIME_METHODS=ccall --preload-file embed.tracy
|
LIBS += -lpthread -ldl $(HOME)/.emscripten_cache/sysroot/lib/libcapstone.a -sUSE_GLFW=3 -sTOTAL_MEMORY=512mb -sWASM_BIGINT=1 -sPTHREAD_POOL_SIZE=4 -sEXPORTED_FUNCTIONS=_main,_nativeResize,_nativeOpenFile -sEXPORTED_RUNTIME_METHODS=ccall --preload-file embed.tracy
|
||||||
|
|
||||||
PROJECT := Tracy
|
PROJECT := Tracy
|
||||||
IMAGE := $(PROJECT)-$(BUILD).html
|
IMAGE := $(PROJECT)-$(BUILD).html
|
||||||
@ -13,7 +13,4 @@ NO_TBB := 1
|
|||||||
|
|
||||||
FILTER := ../../../nfd/nfd_win.cpp
|
FILTER := ../../../nfd/nfd_win.cpp
|
||||||
include ../../../common/src-from-vcxproj.mk
|
include ../../../common/src-from-vcxproj.mk
|
||||||
|
|
||||||
CXXFLAGS += -DTRACY_NO_FILESELECTOR
|
|
||||||
|
|
||||||
include ../../../common/unix.mk
|
include ../../../common/unix.mk
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
#include "TracyFileselector.hpp"
|
#include "TracyFileselector.hpp"
|
||||||
|
|
||||||
#ifndef TRACY_NO_FILESELECTOR
|
#ifndef TRACY_NO_FILESELECTOR
|
||||||
|
# ifdef __EMSCRIPTEN__
|
||||||
|
# include <emscripten.h>
|
||||||
|
# else
|
||||||
# include "../nfd/nfd.h"
|
# include "../nfd/nfd.h"
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace tracy::Fileselector
|
namespace tracy::Fileselector
|
||||||
@ -9,21 +13,52 @@ namespace tracy::Fileselector
|
|||||||
|
|
||||||
void Init()
|
void Init()
|
||||||
{
|
{
|
||||||
#ifndef TRACY_NO_FILESELECTOR
|
#if !defined TRACY_NO_FILESELECTOR && !defined __EMSCRIPTEN__
|
||||||
NFD_Init();
|
NFD_Init();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shutdown()
|
void Shutdown()
|
||||||
{
|
{
|
||||||
#ifndef TRACY_NO_FILESELECTOR
|
#if !defined TRACY_NO_FILESELECTOR && !defined __EMSCRIPTEN__
|
||||||
NFD_Quit();
|
NFD_Quit();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
static std::function<void(const char*)> s_openFileCallback;
|
||||||
|
|
||||||
|
extern "C" int nativeOpenFile()
|
||||||
|
{
|
||||||
|
s_openFileCallback( "upload.tracy" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void OpenFile( const char* ext, const char* desc, std::function<void(const char*)> callback )
|
void OpenFile( const char* ext, const char* desc, std::function<void(const char*)> callback )
|
||||||
{
|
{
|
||||||
#ifndef TRACY_NO_FILESELECTOR
|
#ifndef TRACY_NO_FILESELECTOR
|
||||||
|
# ifdef __EMSCRIPTEN__
|
||||||
|
s_openFileCallback = callback;
|
||||||
|
EM_ASM( {
|
||||||
|
var input = document.createElement( 'input' );
|
||||||
|
input.type = 'file';
|
||||||
|
input.accept = UTF8ToString( $0 );
|
||||||
|
input.onchange = (e) => {
|
||||||
|
var file = e.target.files[0];
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.readAsArrayBuffer( file );
|
||||||
|
reader.onload = () => {
|
||||||
|
var buf = reader.result;
|
||||||
|
var view = new Uint8Array( buf );
|
||||||
|
FS.createDataFile( '/', 'upload.tracy', view, true, true );
|
||||||
|
Module.ccall( 'nativeOpenFile', 'number', [], [] );
|
||||||
|
FS.unlink( '/upload.tracy' );
|
||||||
|
};
|
||||||
|
};
|
||||||
|
input.click();
|
||||||
|
}, ext );
|
||||||
|
# else
|
||||||
nfdu8filteritem_t filter = { desc, ext };
|
nfdu8filteritem_t filter = { desc, ext };
|
||||||
nfdu8char_t* fn;
|
nfdu8char_t* fn;
|
||||||
if( NFD_OpenDialogU8( &fn, &filter, 1, nullptr ) == NFD_OKAY )
|
if( NFD_OpenDialogU8( &fn, &filter, 1, nullptr ) == NFD_OKAY )
|
||||||
@ -31,12 +66,13 @@ void OpenFile( const char* ext, const char* desc, std::function<void(const char*
|
|||||||
callback( (const char*)fn );
|
callback( (const char*)fn );
|
||||||
NFD_FreePathU8( fn );
|
NFD_FreePathU8( fn );
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveFile( const char* ext, const char* desc, std::function<void(const char*)> callback )
|
void SaveFile( const char* ext, const char* desc, std::function<void(const char*)> callback )
|
||||||
{
|
{
|
||||||
#ifndef TRACY_NO_FILESELECTOR
|
#if !defined TRACY_NO_FILESELECTOR && !defined __EMSCRIPTEN__
|
||||||
nfdu8filteritem_t filter = { desc, ext };
|
nfdu8filteritem_t filter = { desc, ext };
|
||||||
nfdu8char_t* fn;
|
nfdu8char_t* fn;
|
||||||
if( NFD_SaveDialogU8( &fn, &filter, 1, nullptr, nullptr ) == NFD_OKAY )
|
if( NFD_SaveDialogU8( &fn, &filter, 1, nullptr, nullptr ) == NFD_OKAY )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user