Fix debugger focus stealing
At least on Windows, the authorization must be given every time, not only at startup.
(cherry picked from commit 2fcbf9dd81
)
This commit is contained in:
parent
e86ef017f2
commit
59a00c3cdd
|
@ -158,6 +158,10 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script, bool p_can_continue)
|
||||||
ERR_FAIL();
|
ERR_FAIL();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (allow_focus_steal_pid) {
|
||||||
|
OS::get_singleton()->enable_for_stealing_focus(allow_focus_steal_pid);
|
||||||
|
}
|
||||||
|
|
||||||
packet_peer_stream->put_var("debug_enter");
|
packet_peer_stream->put_var("debug_enter");
|
||||||
packet_peer_stream->put_var(2);
|
packet_peer_stream->put_var(2);
|
||||||
packet_peer_stream->put_var(p_can_continue);
|
packet_peer_stream->put_var(p_can_continue);
|
||||||
|
@ -1031,6 +1035,10 @@ void ScriptDebuggerRemote::profiling_set_frame_times(float p_frame_time, float p
|
||||||
physics_frame_time = p_physics_frame_time;
|
physics_frame_time = p_physics_frame_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptDebuggerRemote::set_allow_focus_steal_pid(OS::ProcessID p_pid) {
|
||||||
|
allow_focus_steal_pid = p_pid;
|
||||||
|
}
|
||||||
|
|
||||||
ScriptDebuggerRemote::ResourceUsageFunc ScriptDebuggerRemote::resource_usage_func = NULL;
|
ScriptDebuggerRemote::ResourceUsageFunc ScriptDebuggerRemote::resource_usage_func = NULL;
|
||||||
|
|
||||||
ScriptDebuggerRemote::ScriptDebuggerRemote() :
|
ScriptDebuggerRemote::ScriptDebuggerRemote() :
|
||||||
|
@ -1052,6 +1060,7 @@ ScriptDebuggerRemote::ScriptDebuggerRemote() :
|
||||||
n_errors_dropped(0),
|
n_errors_dropped(0),
|
||||||
last_msec(0),
|
last_msec(0),
|
||||||
msec_count(0),
|
msec_count(0),
|
||||||
|
allow_focus_steal_pid(0),
|
||||||
locking(false),
|
locking(false),
|
||||||
poll_every(0),
|
poll_every(0),
|
||||||
request_scene_tree(NULL),
|
request_scene_tree(NULL),
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "io/packet_peer.h"
|
#include "io/packet_peer.h"
|
||||||
#include "io/stream_peer_tcp.h"
|
#include "io/stream_peer_tcp.h"
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
|
#include "os/os.h"
|
||||||
#include "script_language.h"
|
#include "script_language.h"
|
||||||
|
|
||||||
class ScriptDebuggerRemote : public ScriptDebugger {
|
class ScriptDebuggerRemote : public ScriptDebugger {
|
||||||
|
@ -98,6 +99,8 @@ class ScriptDebuggerRemote : public ScriptDebugger {
|
||||||
uint64_t last_msec;
|
uint64_t last_msec;
|
||||||
uint64_t msec_count;
|
uint64_t msec_count;
|
||||||
|
|
||||||
|
OS::ProcessID allow_focus_steal_pid;
|
||||||
|
|
||||||
bool locking; //hack to avoid a deadloop
|
bool locking; //hack to avoid a deadloop
|
||||||
static void _print_handler(void *p_this, const String &p_string, bool p_error);
|
static void _print_handler(void *p_this, const String &p_string, bool p_error);
|
||||||
|
|
||||||
|
@ -169,6 +172,8 @@ public:
|
||||||
virtual void profiling_end();
|
virtual void profiling_end();
|
||||||
virtual void profiling_set_frame_times(float p_frame_time, float p_idle_time, float p_physics_time, float p_physics_frame_time);
|
virtual void profiling_set_frame_times(float p_frame_time, float p_idle_time, float p_physics_time, float p_physics_frame_time);
|
||||||
|
|
||||||
|
void set_allow_focus_steal_pid(OS::ProcessID p_pid);
|
||||||
|
|
||||||
ScriptDebuggerRemote();
|
ScriptDebuggerRemote();
|
||||||
~ScriptDebuggerRemote();
|
~ScriptDebuggerRemote();
|
||||||
};
|
};
|
||||||
|
|
|
@ -726,6 +726,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||||
memdelete(sdr);
|
memdelete(sdr);
|
||||||
} else {
|
} else {
|
||||||
script_debugger = sdr;
|
script_debugger = sdr;
|
||||||
|
sdr->set_allow_focus_steal_pid(allow_focus_steal_pid);
|
||||||
}
|
}
|
||||||
} else if (debug_mode == "local") {
|
} else if (debug_mode == "local") {
|
||||||
|
|
||||||
|
@ -1197,10 +1198,6 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (allow_focus_steal_pid) {
|
|
||||||
OS::get_singleton()->enable_for_stealing_focus(allow_focus_steal_pid);
|
|
||||||
}
|
|
||||||
|
|
||||||
MAIN_PRINT("Main: Load Modules, Physics, Drivers, Scripts");
|
MAIN_PRINT("Main: Load Modules, Physics, Drivers, Scripts");
|
||||||
|
|
||||||
register_platform_apis();
|
register_platform_apis();
|
||||||
|
|
Loading…
Reference in New Issue