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

Reply via email to