awesome. Thanks Conrad & Romain. @Romain : I fixed a rather expensive draw operation on the canvas in one of my views (a custom listview actually - was performing a few primitive draws in the onDraw method). I managed to define a Rect area to limit the bounds. It opens up another question - but I will post it in a separate thread because its not related to TextureView. FYI - Once i fixed this , a simple view (with invalidate() calls) worked like a charm - atleast thus far. I will gauge the performance and see if introducing more drawing operations causes it to choke. Thanks -Ajit On Thursday, October 4, 2012 8:25:01 AM UTC-7, Conrad Chapman wrote:
> As it happens our friend Romain Guy did have some ideas > > https://groups.google.com/forum/?fromgroups=#!topic/android-developers/_Ogjc8sozpA > > thank you > > On Wednesday, 3 October 2012 11:34:58 UTC+2, Conrad Chapman wrote: >> >> I have a similar problem but I was using SurfaceView properly as you >> mention Romain Guy but changing my code over does not work. The problem and >> code was posted here >> >> http://stackoverflow.com/questions/12688409/android-textureview-canvas-drawing-problems >> The unlockandpostcanvas method does nothing. neither does >> TextureView.invalidate or surface.updateTexImage(). Only tapping the screen >> gets it to display?? >> Any ideas? >> >> On Monday, 1 October 2012 18:17:57 UTC+2, Romain Guy (Google) wrote: >>> >>> There is an overhead associated to invalidate() but unless your >>> hierarchy is extremely complicated it shouldn't be such an issue. But >>> you're right: SurfaceView can be used to avoid calling invalidate() >>> but don't override it's onDraw() method. You usually create a new >>> thread that renders onto the surface. >>> >>> On Mon, Oct 1, 2012 at 2:53 AM, Ajit Vasudevan <vasu...@gmail.com> >>> wrote: >>> > Hi Romain, >>> > >>> > Thanks for your response. >>> > >>> > I was experiencing a very interesting behavior. I started using a >>> custom >>> > view inside a framelayout, and performed all the primitive operations >>> and >>> > called invalidate() to let the system call onDraw. It was choking. I >>> even >>> > tried to invalidate a rect, but it was just not fast enough - the 2nd >>> view >>> > that was requesting the underlying view to redraw certain primitives >>> based >>> > on the actions on the 2nd view was not responsive. I then started >>> using the >>> > SurfaceView to see if there is any benefit for the same operation - >>> and >>> > voila - it worked like a charm. This is why is used SurfaceView as a >>> > substitute - there was an apparent performance benefit. >>> > >>> > That said, I'm going to take another look at my hierarchy, and all >>> the >>> > custom views (there are quite a few), to make sure there are no other >>> leaks. >>> > Like you said, I would rather use a View instead of SurfaceView. >>> Thanks for >>> > your input though - it does answer the question that I can use a >>> canvas with >>> > TextureView if i follow the intended mode of use. >>> > >>> > -Ajit >>> > >>> > On Saturday, September 29, 2012 2:47:45 PM UTC-7, Romain Guy (Google) >>> wrote: >>> >> >>> >> Hi, >>> >> >>> >> If you were using SurfaceView's onDraw() method then you were not >>> >> getting any benefit. You have to use >>> >> lockCanvas()/unlockCanvasAndPost() and post on the underlying >>> Surface. >>> >> TextureView works in a similar way: you can call >>> >> lockCanvas()/unlockCanvasAndPost(). >>> >> >>> >> However, it seems all you need is a View. It's easier to use and >>> since >>> >> you are not using SurfaceView properly anyway it will do the same >>> >> thing. >>> >> >>> >> On Thu, Sep 27, 2012 at 2:19 PM, Ajit Vasudevan <vasu...@gmail.com> >>> wrote: >>> >> > Hello, >>> >> > >>> >> > I am currently working on an app that requires >>> computations/rendering >>> >> > based >>> >> > on a variety of user inputs. I have implemented the SurfaceView and >>> >> > things >>> >> > work as expected. >>> >> > But I started facing performance issues when I tried to put this >>> inside >>> >> > a >>> >> > horizontal scroll view. Obviously it is not intended to work this >>> way - >>> >> > but >>> >> > I tried anyway :) >>> >> > Based on what I have read - it appears like I have to move to >>> >> > TextureView. >>> >> > But i am unable to override the onDraw, and therefore cannot >>> perform the >>> >> > necessary drawing using the Canvas. This might be a trivial >>> question - >>> >> > but I >>> >> > wanted to know if we can use TextureView to draw primitives on the >>> >> > screen >>> >> > using a Canvas? The only examples I have seen thus far show the use >>> of >>> >> > video/camera/openGL rendering on the TextureView. >>> >> > >>> >> > Any help on this would be great. >>> >> > >>> >> > Thanks much >>> >> > -Ajit >>> >> > >>> >> > -- >>> >> > You received this message because you are subscribed to the Google >>> >> > Groups "Android Developers" group. >>> >> > To post to this group, send email to android-d...@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 >>> >> roma...@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-d...@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 >>> roma...@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