The problem is that you are calling updateTexImage() yourself. Do *not* do this. You are interfering with TextureView, preventing it from receiving the events that it uses to refresh the screen.
On Tue, Oct 2, 2012 at 7:40 AM, Conrad Chapman <chapman.con...@gmail.com> wrote: > Also asked in StackOverflow here > http://stackoverflow.com/questions/12688409/android-textureview-canvas-drawing-problems > > I have an app that used SurfaceView to draw dynamic 2D graphs. It worked ok > but transormations etc as we know are not supported. So I went to > TextureView. My old code used another class/thread to do the drawing via the > Surfaceholder.lockCanvas(); So I changed this to TextureView.lockcanvas. > When this runs the canvas is not accelerated (the view is). It does not > display initially but if I touch the screen it displays??? The touch is > handled by the main activity. > > Obviously it works as it will display eventually but why doesn't it display > immediately? > > The TextureView class implements SurfaceTextureListener as such below. > @Override > public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, > int height) { > // TODO Auto-generated method stub > isRunning = true; > mySurface = surface; > mChart.setTextureSurface(surface); > mChart.setSurfaceSize(width, height); > mPaint.setColor(ZOOM_BUTTONS_COLOR); > //mySurface.setOnFrameAvailableListener(frameready); > mChart.Redraw(true); > } > @Override > public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { > // TODO Auto-generated method stub > isRunning = false; > return false; > } > this block below also workswhen manipluating the view later on (pan and > zoom) > public void Render(Bitmap buffmap){ > //mCanvas = null; > post(new Runnable() { > public void run() { > invalidate(); > mySurface.updateTexImage(); > } > }); > > > The drawing from the worker thread/class is > protected void RenderCanvas(){ > //mCanvas = null; > Canvas c = null; > //synchronized (mCanvas) { > //mCanvas = null; > try { > c = mChartView.lockCanvas(null); > > synchronized (mCanvas) { > c.drawBitmap(buffBitmap, 0, 0, null); > > } > } finally { > if (c != null) { > mChartView.unlockCanvasAndPost(c); > } > } > mChartView.Render(null); > } > > Can I work like this? Non-GL content in a TextureView? > Please help desperate for an answer. > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- Romain Guy Android framework engineer romain...@android.com -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en