sync viewport
This commit is contained in:
parent
6f85e24ed9
commit
d492358a94
@ -174,14 +174,16 @@ public class MapView extends GLSurfaceView {
|
||||
|
||||
@Override
|
||||
public void updateMap(boolean redraw) {
|
||||
if (mPausing)
|
||||
return;
|
||||
synchronized (mRedrawCb) {
|
||||
if (mPausing)
|
||||
return;
|
||||
|
||||
if (!mRenderRequest) {
|
||||
mRenderRequest = true;
|
||||
mMapView.post(mRedrawCb);
|
||||
} else {
|
||||
mRenderWait = true;
|
||||
if (!mRenderRequest) {
|
||||
mRenderRequest = true;
|
||||
mMapView.post(mRedrawCb);
|
||||
} else {
|
||||
mRenderWait = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -190,7 +192,8 @@ public class MapView extends GLSurfaceView {
|
||||
if (mPausing)
|
||||
return;
|
||||
|
||||
updateMap(true);
|
||||
/** TODO should not need to call prepareFrame in mRedrawCb */
|
||||
updateMap(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -198,15 +201,13 @@ public class MapView extends GLSurfaceView {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doneFrame() {
|
||||
mRenderRequest = false;
|
||||
|
||||
if (mRenderWait) {
|
||||
//log.debug("redraw");
|
||||
mRenderWait = false;
|
||||
updateMap(true);
|
||||
//prepareFrame();
|
||||
//mGLView.requestRender();
|
||||
public void doneFrame(boolean animate) {
|
||||
synchronized (mRedrawCb) {
|
||||
mRenderRequest = false;
|
||||
if (animate || mRenderWait) {
|
||||
mRenderWait = false;
|
||||
render();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,24 +157,25 @@ public abstract class GdxMap implements ApplicationListener {
|
||||
|
||||
@Override
|
||||
public void updateMap(boolean forceRender) {
|
||||
|
||||
if (!mRenderRequest) {
|
||||
mRenderRequest = true;
|
||||
Gdx.app.postRunnable(mRedrawCb);
|
||||
} else {
|
||||
mRenderWait = true;
|
||||
synchronized (mRedrawCb) {
|
||||
if (!mRenderRequest) {
|
||||
mRenderRequest = true;
|
||||
Gdx.app.postRunnable(mRedrawCb);
|
||||
} else {
|
||||
mRenderWait = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
//updateMap(true);
|
||||
|
||||
mRenderRequest = true;
|
||||
if (mClearMap)
|
||||
updateMap(false);
|
||||
else {
|
||||
Gdx.graphics.requestRendering();
|
||||
synchronized (mRedrawCb) {
|
||||
mRenderRequest = true;
|
||||
if (mClearMap)
|
||||
updateMap(false);
|
||||
else {
|
||||
Gdx.graphics.requestRendering();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,16 +201,13 @@ public abstract class GdxMap implements ApplicationListener {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doneFrame() {
|
||||
mRenderRequest = false;
|
||||
|
||||
if (mRenderWait) {
|
||||
mRenderWait = false;
|
||||
|
||||
mRenderRequest = true;
|
||||
|
||||
prepareFrame();
|
||||
Gdx.graphics.requestRendering();
|
||||
public void doneFrame(boolean animate) {
|
||||
synchronized (mRedrawCb) {
|
||||
mRenderRequest = false;
|
||||
if (animate || mRenderWait) {
|
||||
mRenderWait = false;
|
||||
updateMap(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -340,7 +340,9 @@ public abstract class Map implements TaskQueue {
|
||||
return mLayers.handleGesture(g, e);
|
||||
}
|
||||
|
||||
/** Called on render thread, use synchronized! */
|
||||
public abstract void beginFrame();
|
||||
|
||||
public abstract void doneFrame();
|
||||
/** Called on render thread, use synchronized! */
|
||||
public abstract void doneFrame(boolean needsRedraw);
|
||||
}
|
||||
|
@ -70,33 +70,22 @@ public class MapRenderer {
|
||||
mClearColor = GLUtils.colorToFloat(color);
|
||||
}
|
||||
|
||||
private final Runnable renderBegin = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mMap.beginFrame();
|
||||
}
|
||||
};
|
||||
private final Runnable renderDone = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mMap.doneFrame();
|
||||
}
|
||||
};
|
||||
|
||||
public void onDrawFrame() {
|
||||
frametime = System.currentTimeMillis();
|
||||
rerender = false;
|
||||
|
||||
mMap.post(renderBegin);
|
||||
mMap.beginFrame();
|
||||
|
||||
draw();
|
||||
|
||||
mMap.post(renderDone);
|
||||
mMap.doneFrame(rerender);
|
||||
|
||||
mBufferPool.releaseBuffers();
|
||||
TextureItem.disposeTextures();
|
||||
}
|
||||
|
||||
private void draw() {
|
||||
|
||||
GLState.setClearColor(mClearColor);
|
||||
|
||||
gl.depthMask(true);
|
||||
@ -150,10 +139,6 @@ public class MapRenderer {
|
||||
BufferObject.checkBufferUsage(true);
|
||||
// FIXME also throw out some textures etc
|
||||
}
|
||||
if (rerender) {
|
||||
mMap.render();
|
||||
rerender = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void onSurfaceChanged(int width, int height) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user