summaryrefslogtreecommitdiffhomepage
path: root/dragon/hotload.rb
diff options
context:
space:
mode:
author_Tradam <[email protected]>2021-12-16 19:22:26 -0500
committerGitHub <[email protected]>2021-12-16 19:22:26 -0500
commit5954b9beb4d4a3b4f248d72d1851195f030558a8 (patch)
treefecd8aa840a25afdb502915b0fdb4d03b7ed339a /dragon/hotload.rb
parent2f845281f133849256b57bb08fd3e9ae57600784 (diff)
parenteaa29e72939f5edf61735ccbb73c36ee89369f65 (diff)
downloaddragonruby-game-toolkit-contrib-master.tar.gz
dragonruby-game-toolkit-contrib-master.zip
Merge branch 'DragonRuby:master' into masterHEADmaster
Diffstat (limited to 'dragon/hotload.rb')
-rw-r--r--dragon/hotload.rb44
1 files changed, 31 insertions, 13 deletions
diff --git a/dragon/hotload.rb b/dragon/hotload.rb
index 1cb062a..1196e2b 100644
--- a/dragon/hotload.rb
+++ b/dragon/hotload.rb
@@ -10,7 +10,14 @@ module GTK
def hotload_init
@hotload_if_needed = 0
@mailbox_if_needed = 0
+
+ # schema for file_mtimes
+ # { FILE_PATH: { current: (Time as Fixnum),
+ # last: (Time as Fixnum) },
+ # FILE_PATH: { current: (Time as Fixnum),
+ # last: (Time as Fixnum) } }
@file_mtimes = { }
+
@suppress_mailbox = true
files_to_reload.each { |f| init_mtimes f }
init_mtimes 'app/mailbox.rb'
@@ -48,6 +55,7 @@ module GTK
'dragon/symbol.rb',
'dragon/numeric_deprecated.rb',
'dragon/numeric.rb',
+ 'dragon/hash_deprecated.rb',
'dragon/hash.rb',
'dragon/outputs_deprecated.rb',
'dragon/array_docs.rb',
@@ -80,6 +88,7 @@ module GTK
'dragon/trace.rb',
'dragon/readme_docs.rb',
'dragon/hotload_client.rb',
+ 'dragon/wizards.rb',
'dragon/ios_wizard.rb',
'dragon/itch_wizard.rb',
] + core_files_to_reload + @required_files
@@ -98,10 +107,8 @@ module GTK
end
def init_mtimes file
- current_key = "current_#{file}".to_sym
- last_key = "last_#{file}".to_sym
- @file_mtimes[current_key] ||= @ffi_file.mtime(file)
- @file_mtimes[last_key] ||= @ffi_file.mtime(file)
+ @file_mtimes[file] ||= { current: @ffi_file.mtime(file),
+ last: @ffi_file.mtime(file) }
end
def hotload_source_files
@@ -133,25 +140,36 @@ module GTK
end
def hotload_if_needed
+ return if Kernel.tick_count < 0
hotload_source_files
check_mailbox
end
def on_load_succeeded file
- @rcb_sender.files_reloaded << file
- @rcb_sender.reloaded_files << file
+ self.files_reloaded << file
+ self.reloaded_files << file
Trace.untrace_classes!
end
+ def reset_all_mtimes
+ @file_mtimes.each do |file, _|
+ @file_mtimes[file].current = @ffi_file.mtime(file)
+ @file_mtimes[file].last = @file_mtimes[file].current
+ end
+
+ files_to_reload.each do |file, _|
+ @file_mtimes[file] ||= {}
+ @file_mtimes[file].current = @ffi_file.mtime(file)
+ @file_mtimes[file].last = @file_mtimes[file].current
+ end
+ end
+
def reload_if_needed file, force = false
- current_key = "current_#{file}".to_sym
- last_key = "last_#{file}".to_sym
- @file_mtimes[current_key] ||= nil
- @file_mtimes[last_key] ||= nil
- @file_mtimes[current_key] = @ffi_file.mtime(file)
- return if !force && @file_mtimes[last_key] == @file_mtimes[current_key]
+ @file_mtimes[file] ||= { current: @ffi_file.mtime(file), last: @ffi_file.mtime(file) }
+ @file_mtimes[file].current = @ffi_file.mtime(file)
+ return if !force && @file_mtimes[file].current == @file_mtimes[file].last
on_load_succeeded file if reload_ruby_file file
- @file_mtimes[last_key] = @file_mtimes[current_key]
+ @file_mtimes[file].last = @file_mtimes[file].current
end
end
end