Less lag for audio, fixed high CPU usage in background mode
This commit is contained in:
@@ -20,12 +20,12 @@ import java.lang.Thread;
|
||||
|
||||
class AudioThread {
|
||||
|
||||
private Activity mParent;
|
||||
private MainActivity mParent;
|
||||
private AudioTrack mAudio;
|
||||
private byte[] mAudioBuffer;
|
||||
private int mVirtualBufSize;
|
||||
|
||||
public AudioThread(Activity parent)
|
||||
public AudioThread(MainActivity parent)
|
||||
{
|
||||
mParent = parent;
|
||||
mAudio = null;
|
||||
@@ -35,13 +35,15 @@ class AudioThread {
|
||||
|
||||
public int fillBuffer()
|
||||
{
|
||||
if( Globals.AudioBufferConfig == 0 && mAudio.getPlaybackHeadPosition() * 1000 / mAudio.getPlaybackRate() >= 30 )
|
||||
if( Globals.AudioBufferConfig == 0 )
|
||||
mAudio.flush();
|
||||
mAudio.write( mAudioBuffer, 0, mVirtualBufSize );
|
||||
if( mParent.isPaused() )
|
||||
{
|
||||
try{
|
||||
Thread.sleep(10);
|
||||
} catch(InterruptedException e) {}
|
||||
Thread.sleep(200);
|
||||
} catch (InterruptedException e) {}
|
||||
}
|
||||
mAudio.write( mAudioBuffer, 0, mVirtualBufSize );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -170,6 +170,7 @@ public class MainActivity extends Activity {
|
||||
downloader.setStatusField(null);
|
||||
}
|
||||
}
|
||||
_isPaused = true;
|
||||
if( mGLView != null )
|
||||
mGLView.onPause();
|
||||
super.onPause();
|
||||
@@ -188,6 +189,12 @@ public class MainActivity extends Activity {
|
||||
initSDL();
|
||||
}
|
||||
}
|
||||
_isPaused = false;
|
||||
}
|
||||
|
||||
public boolean isPaused()
|
||||
{
|
||||
return _isPaused;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -358,5 +365,6 @@ public class MainActivity extends Activity {
|
||||
private EditText _screenKeyboard = null;
|
||||
private boolean sdlInited = false;
|
||||
public Settings.TouchMeasurementTool _touchMeasurementTool = null;
|
||||
boolean _isPaused = false;
|
||||
|
||||
}
|
||||
|
||||
@@ -300,6 +300,10 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
super.onPause();
|
||||
mRenderer.mPaused = true;
|
||||
};
|
||||
|
||||
public boolean isPaused() {
|
||||
return mRenderer.mPaused;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
|
||||
Reference in New Issue
Block a user