use tryLock() to avoid on-ui-thread assertions

This commit is contained in:
Eric House 2018-12-26 21:41:47 -08:00
parent 62cd90c183
commit b0805b0b6a

View file

@ -537,14 +537,13 @@ public class GameConfigDelegate extends DelegateBase
m_giOrig = new CurGameInfo( m_activity ); m_giOrig = new CurGameInfo( m_activity );
GameLock gameLock = null; GameLock gameLock = null;
XwJNI.GamePtr gamePtr; XwJNI.GamePtr gamePtr = null;
if ( null == m_jniThread ) { if ( null == m_jniThread ) {
try { gameLock = GameLock.getFor( m_rowid ).tryLockRO();
gameLock = GameLock.getFor( m_rowid ).lockRO(); if ( null != gameLock ) {
} catch (InterruptedException iex) { gamePtr = GameUtils.loadMakeGame( m_activity, m_giOrig,
Assert.assertFalse( BuildConfig.DEBUG ); gameLock );
} }
gamePtr = GameUtils.loadMakeGame( m_activity, m_giOrig, gameLock );
} else { } else {
gameLock = m_jniThread.getLock(); gameLock = m_jniThread.getLock();
gamePtr = m_jniThread.getGamePtr(); gamePtr = m_jniThread.getGamePtr();
@ -1234,18 +1233,14 @@ public class GameConfigDelegate extends DelegateBase
private void applyChanges( boolean forceNew ) private void applyChanges( boolean forceNew )
{ {
if ( !isFinishing() ) { if ( !isFinishing() ) {
try { GameLock gameLock = m_jniThread == null
GameLock gameLock = m_jniThread == null ? GameLock.getFor( m_rowid ).tryLock()
? GameLock.getFor( m_rowid ).lock() : m_jniThread.getLock();
: m_jniThread.getLock(); GameUtils.applyChanges( m_activity, m_gi, m_car, m_disabMap,
GameUtils.applyChanges( m_activity, m_gi, m_car, m_disabMap, gameLock, forceNew );
gameLock, forceNew ); DBUtils.saveThumbnail( m_activity, gameLock, null ); // clear it
DBUtils.saveThumbnail( m_activity, gameLock, null ); // clear it if ( null == m_jniThread ) {
if ( null == m_jniThread ) { gameLock.unlock();
gameLock.unlock();
}
} catch (InterruptedException iex) {
Assert.assertFalse( BuildConfig.DEBUG );
} }
} }
} }