summaryrefslogtreecommitdiff
path: root/main/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/main.cpp')
-rw-r--r--main/main.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/main/main.cpp b/main/main.cpp
index ad49e1f5bd..e2b3bb8e6f 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -263,6 +263,7 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print("Standalone tools:\n");
OS::get_singleton()->print(" -s, --script <script> Run a script.\n");
+ OS::get_singleton()->print(" --check-only Only parse for errors and quit (use with --script).\n");
#ifdef TOOLS_ENABLED
OS::get_singleton()->print(" --export <target> Export the project using the given export target. Export only main pack if path ends with .pck or .zip'.\n");
OS::get_singleton()->print(" --export-debug <target> Like --export, but use debug template.\n");
@@ -538,6 +539,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
} else if (I->get() == "--build-solutions") { // Build the scripting solution such C#
auto_build_solutions = true;
+ editor = true;
#endif
} else if (I->get() == "--no-window") { // disable window creation, Windows only
@@ -865,6 +867,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->_allow_layered = GLOBAL_DEF("display/window/allow_per_pixel_transparency", false);
video_mode.use_vsync = GLOBAL_DEF("display/window/vsync/use_vsync", true);
+ OS::get_singleton()->_use_vsync = video_mode.use_vsync;
+
video_mode.layered = GLOBAL_DEF("display/window/per_pixel_transparency", false);
video_mode.layered_splash = GLOBAL_DEF("display/window/per_pixel_transparency_splash", false);
@@ -1239,6 +1243,7 @@ bool Main::start() {
String test;
String _export_preset;
bool export_debug = false;
+ bool check_only = false;
main_timer_sync.init(OS::get_singleton()->get_ticks_usec());
@@ -1261,6 +1266,8 @@ bool Main::start() {
bool parsed_pair = true;
if (args[i] == "-s" || args[i] == "--script") {
script = args[i + 1];
+ } else if (args[i] == "--check-only") {
+ check_only = true;
} else if (args[i] == "--test") {
test = args[i + 1];
#ifdef TOOLS_ENABLED
@@ -1383,6 +1390,10 @@ bool Main::start() {
ERR_EXPLAIN("Can't load script: " + script);
ERR_FAIL_COND_V(script_res.is_null(), false);
+ if (check_only) {
+ return false;
+ }
+
if (script_res->can_instance() /*&& script_res->inherits_from("SceneTreeScripted")*/) {
StringName instance_type = script_res->get_instance_base_type();
@@ -1706,7 +1717,7 @@ bool Main::start() {
uint64_t Main::last_ticks = 0;
uint64_t Main::target_ticks = 0;
-Array Main::frame_times = Array();
+uint32_t Main::frames = 0;
uint32_t Main::frame = 0;
bool Main::force_redraw_requested = false;
@@ -1807,9 +1818,6 @@ bool Main::iteration() {
}
}
- if (AudioServer::get_singleton())
- AudioServer::get_singleton()->update();
-
idle_process_ticks = OS::get_singleton()->get_ticks_usec() - idle_begin;
idle_process_max = MAX(idle_process_ticks, idle_process_max);
uint64_t frame_time = OS::get_singleton()->get_ticks_usec() - ticks;
@@ -1825,19 +1833,10 @@ bool Main::iteration() {
script_debugger->idle_poll();
}
+ frames++;
Engine::get_singleton()->_idle_frames++;
- // FPS counter
- frame_times.push_back(ticks);
- int frames = frame_times.size();
-
- while (frame_times.size() > 0 && (int)frame_times.get(0) <= ticks - 1000000) {
- frame_times.pop_front();
- }
-
- int update_frequency = MAX(1, (int)GLOBAL_GET("debug/settings/performance/update_frequency_msec"));
-
- if (frame > update_frequency * 1000) {
+ if (frame > 1000000) {
if (editor || project_manager) {
if (print_fps) {
@@ -1853,7 +1852,8 @@ bool Main::iteration() {
idle_process_max = 0;
physics_process_max = 0;
- frame %= update_frequency * 1000;
+ frame %= 1000000;
+ frames = 0;
}
if (fixed_fps != -1)