Android: Don't hold gameFileCache lock during updateAdditionalMetadata

It seems like we spend a lot of the game list scanning time in
updateAdditionalMetadata, which I suppose makes sense considering
how many different files that function attempts to open.

With the addition of just one little atomic operation, we can make
it safe to call updateAdditionalMetadata without holding a lock.
This commit is contained in:
JosJuice
2021-08-24 15:07:15 +02:00
parent bba33c7ced
commit fb265b610d
4 changed files with 23 additions and 17 deletions

View File

@ -194,26 +194,27 @@ public final class GameFileCacheService extends IntentService
{
String[] gamePaths = GameFileCache.getAllGamePaths();
boolean changed;
synchronized (gameFileCache)
{
boolean changed = gameFileCache.update(gamePaths);
if (changed)
{
updateGameFileArray();
sendBroadcast(CACHE_UPDATED);
}
changed = gameFileCache.update(gamePaths);
}
if (changed)
{
updateGameFileArray();
sendBroadcast(CACHE_UPDATED);
}
boolean additionalMetadataChanged = gameFileCache.updateAdditionalMetadata();
if (additionalMetadataChanged)
{
updateGameFileArray();
sendBroadcast(CACHE_UPDATED);
}
boolean additionalMetadataChanged = gameFileCache.updateAdditionalMetadata();
if (additionalMetadataChanged)
{
updateGameFileArray();
sendBroadcast(CACHE_UPDATED);
}
if (changed || additionalMetadataChanged)
{
gameFileCache.save();
}
if (changed || additionalMetadataChanged)
{
gameFileCache.save();
}
}