sync thread access to text input buffer

This commit is contained in:
Struma 2021-03-08 06:20:43 -05:00 committed by Roza
parent 10f3d2655d
commit 69a89cf87f
3 changed files with 635 additions and 609 deletions

View file

@ -20,11 +20,13 @@
*/
#include "binding-util.h"
#include "exception.h"
#include "input.h"
#include "util/exception.h"
#include "input/input.h"
#include "sharedstate.h"
#include "src/util/util.h"
#include "eventthread.h"
#include <SDL_joystick.h>
#include <string>
@ -323,10 +325,10 @@ RB_METHOD(inputSetMode) {
RB_METHOD(inputGets) {
RB_UNUSED_PARAM;
shState->eThread().lockText(true);
VALUE ret = rb_utf8_str_new_cstr(shState->input().getText());
shState->input().clearText();
shState->eThread().lockText(false);
return ret;
}

File diff suppressed because it is too large Load diff

View file

@ -77,10 +77,13 @@ public:
static TouchState touchState;
std::string textInputBuffer;
void lockText(bool lock);
static bool allocUserEvents();
EventThread();
~EventThread();
void process(RGSSThreadData &rtData);
void cleanup();
@ -129,6 +132,8 @@ private:
AtomicFlag msgBoxDone;
SDL_mutex *textInputLock;
struct
{
AtomicFlag sendUpdates;