Merge branch 'ui-minor' of https://github.com/unknownbrackets/ppsspp into unknownbrackets-ui-minor

This commit is contained in:
Henrik Rydgard 2016-12-01 18:13:14 +01:00
commit bc746bd513
5 changed files with 14 additions and 8 deletions

View File

@ -439,8 +439,6 @@ bool AnalogTestScreen::key(const KeyInput &key) {
return true;
}
lock_guard guard(eventLock_);
char buf[512];
snprintf(buf, sizeof(buf), "Keycode: %d Device ID: %d [%s%s%s%s]", key.keyCode, key.deviceId,
(key.flags & KEY_IS_REPEAT) ? "REP" : "",
@ -461,8 +459,6 @@ bool AnalogTestScreen::axis(const AxisInput &axis) {
// a controller would be confusing for the user.
char buf[512];
lock_guard guard(eventLock_);
if (IgnoreAxisForMapping(axis.axisId))
return false;
@ -482,8 +478,6 @@ bool AnalogTestScreen::axis(const AxisInput &axis) {
void AnalogTestScreen::CreateViews() {
using namespace UI;
lock_guard guard(eventLock_);
I18NCategory *di = GetI18NCategory("Dialog");
root_ = new LinearLayout(ORIENT_VERTICAL);

View File

@ -82,6 +82,4 @@ protected:
UI::TextView *lastKeyEvent_;
UI::TextView *lastLastKeyEvent_;
recursive_mutex eventLock_;
};

View File

@ -47,6 +47,7 @@ void ScreenManager::update(InputState &input) {
}
void ScreenManager::switchToNext() {
lock_guard guard(inputLock_);
if (!nextScreen_) {
ELOG("switchToNext: No nextScreen_!");
}
@ -66,6 +67,7 @@ void ScreenManager::switchToNext() {
}
bool ScreenManager::touch(const TouchInput &touch) {
lock_guard guard(inputLock_);
if (!stack_.empty()) {
return stack_.back().screen->touch(touch);
} else {
@ -74,6 +76,7 @@ bool ScreenManager::touch(const TouchInput &touch) {
}
bool ScreenManager::key(const KeyInput &key) {
lock_guard guard(inputLock_);
if (!stack_.empty()) {
return stack_.back().screen->key(key);
} else {
@ -82,6 +85,7 @@ bool ScreenManager::key(const KeyInput &key) {
}
bool ScreenManager::axis(const AxisInput &axis) {
lock_guard guard(inputLock_);
if (!stack_.empty()) {
return stack_.back().screen->axis(axis);
} else {
@ -90,6 +94,7 @@ bool ScreenManager::axis(const AxisInput &axis) {
}
void ScreenManager::resized() {
lock_guard guard(inputLock_);
// Have to notify the whole stack, otherwise there will be problems when going back
// to non-top screens.
for (auto iter = stack_.begin(); iter != stack_.end(); ++iter) {
@ -163,6 +168,7 @@ Screen *ScreenManager::topScreen() const {
}
void ScreenManager::shutdown() {
lock_guard guard(inputLock_);
for (auto x = stack_.begin(); x != stack_.end(); x++)
delete x->screen;
stack_.clear();
@ -171,6 +177,7 @@ void ScreenManager::shutdown() {
}
void ScreenManager::push(Screen *screen, int layerFlags) {
lock_guard guard(inputLock_);
if (nextScreen_ && stack_.empty()) {
// we're during init, this is OK
switchToNext();
@ -185,6 +192,7 @@ void ScreenManager::push(Screen *screen, int layerFlags) {
}
void ScreenManager::pop() {
lock_guard guard(inputLock_);
if (stack_.size()) {
delete stack_.back().screen;
stack_.pop_back();
@ -215,6 +223,7 @@ void ScreenManager::finishDialog(Screen *dialog, DialogResult result) {
void ScreenManager::processFinishDialog() {
if (dialogFinished_) {
lock_guard guard(inputLock_);
// Another dialog may have been pushed before the render, so search for it.
Screen *caller = 0;
for (size_t i = 0; i < stack_.size(); ++i) {

View File

@ -17,6 +17,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
#include "base/mutex.h"
#include "base/NativeApp.h"
namespace UI {
@ -126,6 +127,8 @@ public:
Screen *topScreen() const;
recursive_mutex inputLock_;
private:
void pop();
void switchToNext();

View File

@ -19,6 +19,8 @@ UIScreen::~UIScreen() {
}
void UIScreen::DoRecreateViews() {
lock_guard guard(screenManager()->inputLock_);
if (recreateViews_) {
UI::PersistMap persisted;
bool persisting = root_ != nullptr;