extern void SDL_ANDROID_MainThreadPushText( int ascii, int unicode ) { int shiftRequired; #if SDL_VERSION_ATLEAST(1,3,0) { char text[32]; UnicodeToUtf8(unicode, text); SDL_SendKeyboardText(text); } #endif if( !deferredTextMutex ) deferredTextMutex = SDL_CreateMutex(); SDL_mutexP(deferredTextMutex); shiftRequired = checkShiftRequired(&ascii); if( shiftRequired ) { deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_PRESSED; deferredText[deferredTextIdx2].scancode = SDLK_LSHIFT; deferredText[deferredTextIdx2].unicode = 0; } deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_PRESSED; deferredText[deferredTextIdx2].scancode = ascii; deferredText[deferredTextIdx2].unicode = unicode; deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_RELEASED; deferredText[deferredTextIdx2].scancode = ascii; deferredText[deferredTextIdx2].unicode = 0; if( shiftRequired ) { deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_RELEASED; deferredText[deferredTextIdx2].scancode = SDLK_LSHIFT; deferredText[deferredTextIdx2].unicode = 0; } SDL_mutexV(deferredTextMutex); }
extern void SDL_ANDROID_MainThreadPushText( int ascii, int unicode ) { int shiftRequired; int nextEvent = getNextEventAndLock(); if( nextEvent == -1 ) return; SDL_Event * ev = &BufferedEvents[BufferedEventsEnd]; #if SDL_VERSION_ATLEAST(1,3,0) ev->type = SDL_TEXTINPUT; UnicodeToUtf8(unicode, ev->text.text); #endif if( !deferredTextMutex ) deferredTextMutex = SDL_CreateMutex(); SDL_mutexP(deferredTextMutex); ev->type = 0; shiftRequired = checkShiftRequired(&ascii); if( shiftRequired ) { deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_PRESSED; deferredText[deferredTextIdx2].scancode = SDLK_LSHIFT; deferredText[deferredTextIdx2].unicode = 0; } deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_PRESSED; deferredText[deferredTextIdx2].scancode = ascii; deferredText[deferredTextIdx2].unicode = unicode; deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_RELEASED; deferredText[deferredTextIdx2].scancode = ascii; deferredText[deferredTextIdx2].unicode = 0; if( shiftRequired ) { deferredTextIdx2++; if( deferredTextIdx2 >= DEFERRED_TEXT_COUNT ) deferredTextIdx2 = 0; deferredText[deferredTextIdx2].down = SDL_RELEASED; deferredText[deferredTextIdx2].scancode = SDLK_LSHIFT; deferredText[deferredTextIdx2].unicode = 0; } SDL_mutexV(deferredTextMutex); BufferedEventsEnd = nextEvent; SDL_mutexV(BufferedEventsMutex); };