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