Commit Graph

9129 Commits (64650374325e62064e97375167c8349ff88705ae)
 

Author SHA1 Message Date
Pauli f6b0ac7819 Refactor CoreSuspender to fix Console::lineedit exit hangs
The old CoreSuspender requires processing from Core::Update to allow
commands execute. But that causes issues if Core::Shutdown wants
quarentee cleanup order with std:🧵:join. Fixing shutdown ordering
adds too many branches to already fairly complex code.

I decided to try to refactor CoreSuspender to use simpler locking
locking using a std::recusive_muted as primary synchronization
primitive.
To help control when Core::Update unlocks the primary mutex there is
std::contition_variable_any and std::atomic<size_t> queue lenght
counter.
The last state variable is std::atomic<std:🧵:id> that is used to
keep track of owner thread for Core::IsSuspended query.

This should be merged only just after a release to make sure that it
gets maximum testing in develop branch before next release.

Fixes #1066
2018-06-22 17:57:37 +03:00
Pauli 0bc1db4f07 Make sure hotkeythread exits before cleanup 2018-06-22 17:57:37 +03:00
Pauli 1fc37f8ddc Checke Console::lineedit error return values
Console::lineedit can return -1 to indicate input error and -2 to
indicate the program is closing. But most users don't check possible
unusual return values which can lead to exit hang.
2018-06-22 17:57:37 +03:00
Pauli 84b1361387 Make cuchar check test if c32rtomb is present in system
Fix for mac build where cuchar is present but uchar.h is not.
2018-06-22 17:57:37 +03:00
Pauli 84f8a75a2e Add cuchar fallback implementation for gcc 4 and 5 2018-06-22 17:57:37 +03:00
Pauli 820b787cd0 Add multibyte character handling to posix console
I noticed that multibyte characters can mess up the console state
variables. I decided to add a minimal multibyte support to make sure the
input only collects complete valid multibyte characters in case user
enters them to console.

This change assumes that UTF-32 has one to one mapping between printed
characters and char32 indexes. But I remember reading there is a few
rare corner cases with accents where character might require multiple
4byte characters too. But this patch at least changes correct handling
from about 100 characters to 99% of unicode characters.
2018-06-22 17:57:37 +03:00
Pauli 1acb60daa2 Prevent data races during console/init thread shutdown
There is a minor chance that console or init thread would access already
freed memory when core is shutting down and cleaning up state. To avoid
any danger of having random bugs caused by the potential data race I
decided to make sure the shutdown code waits for the thread to exit
first.

Windows change is completely untested. It is purely based on msdn
documentation.
2018-06-22 17:57:37 +03:00
Pauli 19a169ba65 Convert Core.cpp to use c++11 thread
I noticed that tthread is missing some c++11 features that make thread
handling code a bit easier. To be able to use those features I decided
to convert Core.cpp to use equivalent standard classes.

This patch has no functional changes.
2018-06-22 17:57:37 +03:00
Pauli b7871c7368 Console-posix: Use lowest possible nfds parameter to the select call 2018-06-22 17:57:37 +03:00
lethosor 8a1979b8a7 Update version in CMakeLists.txt to 0.44.10-r2 2018-06-21 22:34:11 -04:00
lethosor bc08ba6a3b Update changelog for r2 2018-06-21 22:33:21 -04:00
lethosor 9c7bd562d4 fix-unit-occupancy, autogems: stop running while embarking
Related to #1286 fix
2018-06-21 16:16:54 -04:00
lethosor 46e31305a1 Merge remote-tracking branch 'PatrikLundell/embark-assistant' into develop 2018-06-21 15:54:03 -04:00
lethosor f20dae5a4c Merge remote-tracking branch 'suokko/fix_dramp_to_check_jobs_1228' into develop 2018-06-21 15:20:41 -04:00
lethosor 854f467f56 Merge remote-tracking branch 'suokko/check_jobs_on_mapcache_commit_1229' into develop 2018-06-21 15:03:51 -04:00
PatrikLundell 8e1a1851be Removed temporary comments 2018-06-21 21:00:59 +02:00
PatrikLundell 9a8e251853 Updated evil weather 2018-06-21 20:51:36 +02:00
PatrikLundell f02f4b8bcc Updated evil weather 2018-06-21 20:51:05 +02:00
PatrikLundell 91aa16216b Updated evil weather 2018-06-21 20:50:30 +02:00
PatrikLundell 1382c04696 Updated evil weather 2018-06-21 20:49:49 +02:00
PatrikLundell 14b0ea5b98 Updated evil weather 2018-06-21 20:49:08 +02:00
PatrikLundell ad5328e119 Updated evil weather 2018-06-21 20:48:35 +02:00
lethosor 42eadf97b0 Update stonesense (#1302, dfhack/df-structures#247) 2018-06-21 12:00:12 -04:00
lethosor d9917e9a1d cxxrandom: remove pragmas, fix format warnings, misc. cleanup 2018-06-21 12:00:04 -04:00
lethosor 7a5e7c7c86 Rename unit_flags1.dead to killed, update submodules/changelog
Follow-up for dfhack/df-structures#247
2018-06-21 11:17:09 -04:00
lethosor 46b6bfd3f7 Merge remote-tracking branch 'suokko/fix_stocks_to_filter_military_items_1288' into develop 2018-06-21 00:04:06 -04:00
lethosor 1deb6ab024 Update xml 2018-06-20 16:19:00 -04:00
lethosor b2fd0b062b Merge remote-tracking branch 'PatrikLundell/dead_plugins' into develop 2018-06-20 16:18:07 -04:00
lethosor 7fda8506f0 Merge remote-tracking branch 'suokko/cmake_option_to_enable_all_symbols' into develop 2018-06-20 16:16:03 -04:00
Pauli 72029e7de9 Avoid closing DF if launching command-prompt from prompt 2018-06-20 22:16:23 +03:00
Pauli 37e3a59b7c Changelog entry for command-prompt screen hiding 2018-06-20 21:51:45 +03:00
Pauli 9b6781f0f2 Temporary lower command-prompt when executing the command
command-prompt viewscreen may affect command execution if they are
looking for UI state. To make commands execute simillary to hotkeys or
console commands the viewscreen needs to removed from the top position.

Fixes #1194
2018-06-20 21:51:45 +03:00
lethosor cdca28ddfa Merge branch 'develop' of gh:dfhack/dfhack into develop 2018-06-20 12:10:52 -04:00
lethosor 7036cc376b Fix warnings in devel plugins introduced by #1302 2018-06-20 12:03:14 -04:00
lethosor 706f3f9f4c Add missing changelog entries from #1253 2018-06-20 11:50:26 -04:00
lethosor 79860a61ad Update changelog (#1300, #1302) 2018-06-20 11:29:21 -04:00
lethosor 6077a8ce4c Merge remote-tracking branch 'suokko/printf_warnings' into develop 2018-06-20 11:25:14 -04:00
lethosor 2f1d3c68c6 Merge remote-tracking branch 'suokko/stl_vsnprintf' into develop 2018-06-20 11:23:57 -04:00
lethosor 5bfe4fd72b Mention Lua API-only plugins in Plugins.rst 2018-06-20 11:22:21 -04:00
lethosor 7f9270407f Update other docs for cxxrandom/#1204 2018-06-20 11:17:05 -04:00
lethosor 26427c2e43 Document cxxrandom in Lua API.rst (#1204) 2018-06-20 11:13:40 -04:00
lethosor 862fa08ba6 Merge remote-tracking branch 'cppcooper/cxxrandom-rel' into develop 2018-06-20 11:00:43 -04:00
lethosor b9df6fae85 Update xml, authors 2018-06-20 10:51:24 -04:00
Pauli 98b25e3462 Allow calling List:setChoices() to clear choices 2018-06-20 17:46:24 +03:00
Pauli 40469c6bef Changelog entry for List:setChoices change 2018-06-20 17:38:34 +03:00
Pauli ed23d2c4e2 Change gui.widgets.List:setChoices to keep state in internal table
Fixes #1171
2018-06-20 17:23:57 +03:00
Pauli a38aefbe44 Changelog entry for deramp fix 2018-06-20 15:54:31 +03:00
Pauli f90eebdd2d Add designation job check to deramp
Fixes #1228
2018-06-20 15:54:31 +03:00
Pauli 41f48bca7a Changelog entry for item in stocpile check 2018-06-19 18:07:44 +03:00
Pauli bd0d36ec82 Fix stockpile inventory not to include inventory items
Inventory items have stale position information. The coordinates can be
very old if item is owned and continuesly carried for long time. The fix
checks if item is carried. To avoid filtering carried items that are
assigned (containers) to the stockpile the assignment needs to be
checked.

Fixes #1288
2018-06-19 18:06:28 +03:00