GDExtension: Copy DLL to a temp file before opening
This is done only in the editor and only on Windows, to avoid a file lock that prevents the original library being updated (e.g. by a compiler). When the game runs it will load the original DLL and pick up any changes, only the editor will stay with the copy (until it is restarted and create a new copy). The copy is done in place by prepending a `~` to the original file name, so dependencies that are loaded with a relative file path still work. When the library is unloaded the copy file is deleted. The copy is also marked as hidden to not show up in explorer.
This commit is contained in:
parent
4714e95896
commit
cff69b0612
3 changed files with 54 additions and 1 deletions
|
|
@ -1540,6 +1540,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
if (editor) {
|
||||
Engine::get_singleton()->set_editor_hint(true);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Initialize user data dir.
|
||||
OS::get_singleton()->ensure_user_data_dir();
|
||||
|
||||
|
|
@ -1567,7 +1573,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|||
#ifdef TOOLS_ENABLED
|
||||
if (editor) {
|
||||
packed_data->set_disabled(true);
|
||||
Engine::get_singleton()->set_editor_hint(true);
|
||||
main_args.push_back("--editor");
|
||||
if (!init_windowed) {
|
||||
init_maximized = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue