Slowdive's Little Daily Blog

Discuss anything in general about the IceBlink Engine + Toolset project (or anything else) here.

Re: Slowdive's Little Daily Blog

Postby youngneil1 » Sun Dec 16, 2018 5:40 pm

Ha, I am sure they saw us posting about their lack of speed in the past and this is a desperate act of damage control :lol: .
User avatar
youngneil1
Backer
Backer
 
Posts: 4942
Joined: Sat Dec 08, 2012 7:51 am

Re: Slowdive's Little Daily Blog

Postby slowdive » Wed Dec 19, 2018 4:26 am

So I am trying to track down an ugly bug. It seems to be impacting a few android users, but not all. I haven't had the crash happen to me so it is difficult to track down. I have seen the bug reports in the dev console, but it doesn't give me any useful information other than that it has something to do with skiaSharp OnDraw routine (an buried in the native code). I have been doing a lot of Google searching the past few days to no avail. The bug has been around for some time in the dev console reports, but I haven't had many users siting it. It can't be trapped with a try/catch so there is no way to avoid the crashes other than to figure it out. I recent try was to stop using a local reference to the canvas and instead pass the canvas around to all the draw routines as needed. This was a ton of work to rewrite all the code, but I am running out of options. I would hate to just start telling some users that it is just going to be a buggy engine and to try and deal with it...so I keep searching and trying things. Again, I haven't had the crash happen to me so it is difficult to test various fixes. All I can do is try a fix and then post to Google Play and watch to see if new crash reports trickle in :P

Here is what the dev console reports:
Code: Select all
android.runtime.JavaProxyThrowable: at IBbasic.ToolsetScreenPlayerEditor.drawAttributes () [0x00000] in <bd13015ea86c48478664ed4a7c933280>:0
at IBbasic.ToolsetScreenPlayerEditor.redrawTsPlayerEditor () [0x0053f] in <bd13015ea86c48478664ed4a7c933280>:0
at IBbasic.GameView.Render (SkiaSharp.SKCanvas c) [0x00201] in <bd13015ea86c48478664ed4a7c933280>:0
at IBbasic.MainPage.canvasView_PaintSurface (System.Object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) [0x00019] in <bd13015ea86c48478664ed4a7c933280>:0
at SkiaSharp.Views.Forms.SKCanvasView.OnPaintSurface (SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) [0x0000a] in <7156da63f7de4f9f9016421a0c97a332>:0
at SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp.Views.Forms.ISKCanvasViewController.OnPaintSurface (SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) [0x00000] in <7156da63f7de4f9f9016421a0c97a332>:0
at SkiaSharp.Views.Forms.SKCanvasViewRendererBase`2[TFormsView,TNativeView].OnPaintSurface (System.Object sender, SkiaSharp.Views.Android.SKPaintSurfaceEventArgs e) [0x00021] in <7156da63f7de4f9f9016421a0c97a332>:0
at SkiaSharp.Views.Android.SKCanvasView.OnDraw (SkiaSharp.SKSurface surface, SkiaSharp.SKImageInfo info) [0x00013] in <f360f202b6ad450a9b82eae8d6aa2898>:0
at SkiaSharp.Views.Android.SKCanvasView.OnDraw (Android.Graphics.Canvas canvas) [0x000d0] in <f360f202b6ad450a9b82eae8d6aa2898>:0
at Android.Views.View.n_OnDraw_Landroid_graphics_Canvas_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_canvas) [0x00011] in <39a52aa2e4ab47268fb1a764a8e12d7f>:0
at (wrapper dynamic-method) System.Object.31(intptr,intptr,intptr)
  at md5f24c356e1394bd37d0c871b61b28ee61.SKCanvasView.n_onDraw (Native Method)
  at md5f24c356e1394bd37d0c871b61b28ee61.SKCanvasView.onDraw (SKCanvasView.java:46)
  at android.view.View.draw (View.java:17190)
  at android.view.View.updateDisplayListIfDirty (View.java:16172)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3713)
  at android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3693)
  at android.view.View.updateDisplayListIfDirty (View.java:16135)
  at android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:648)
  at android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:654)
  at android.view.ThreadedRenderer.draw (ThreadedRenderer.java:762)
  at android.view.ViewRootImpl.draw (ViewRootImpl.java:2808)
  at android.view.ViewRootImpl.performDraw (ViewRootImpl.java:2616)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2215)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1254)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6351)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:874)
  at android.view.Choreographer.doCallbacks (Choreographer.java:686)
  at android.view.Choreographer.doFrame (Choreographer.java:621)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:860)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:159)
  at android.app.ActivityThread.main (ActivityThread.java:6139)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 3116
Joined: Wed Nov 21, 2012 11:58 pm

Re: Slowdive's Little Daily Blog

Postby youngneil1 » Wed Dec 19, 2018 8:57 am

Ah, that really sounds nasty :| .

Google Fu revealed this thread on a similar issue, but I guess you already crawled through it (eg the idea to stop using local references to canvas is in there, too):

https://forums.xamarin.com/discussion/8 ... rks-in-ios
User avatar
youngneil1
Backer
Backer
 
Posts: 4942
Joined: Sat Dec 08, 2012 7:51 am

Re: Slowdive's Little Daily Blog

Postby slowdive » Wed Dec 19, 2018 12:00 pm

That's the one that I used for my latest attempt, remove the local reference to my canvas. I had already made lots of checks for null objects and try/catch, but they haven't made the issue go away. Crossing fingers that the local canvas was the problem in Android for some. I made all the changes and the code is up and running again. I'll post another build to Google Play in a couple days. I want to see how many crashes the current v27 build gets in the next few days for a better comparison for when I post v28.
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 3116
Joined: Wed Nov 21, 2012 11:58 pm

Re: Slowdive's Little Daily Blog

Postby slowdive » Fri Dec 21, 2018 3:10 am

Took a break from coding today and instead went back to playing more Hearkenwold. My party is heading on out to find this Wrathack person at some pub...wish us luck.
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 3116
Joined: Wed Nov 21, 2012 11:58 pm

Re: Slowdive's Little Daily Blog

Postby Dorateen » Fri Dec 21, 2018 2:14 pm

slowdive wrote: My party is heading on out to find this Wrathack person at some pub...


Good way to spend the holidays!
User avatar
Dorateen
Backer
Backer
 
Posts: 956
Joined: Mon Nov 26, 2012 2:08 pm

Re: Slowdive's Little Daily Blog

Postby youngneil1 » Fri Dec 21, 2018 3:31 pm

Quite the ride ahead, keep us psoted how you fare, Jer :) .
User avatar
youngneil1
Backer
Backer
 
Posts: 4942
Joined: Sat Dec 08, 2012 7:51 am

Re: Slowdive's Little Daily Blog

Postby slowdive » Wed Dec 26, 2018 8:51 pm

Not a lot of coding or playing going on here with end of the year stuff going on. A quick observation on IBbasic so far. It looks like having all the modules in one place is fun, but the actual stand alone modules are still getting more play throughs and much longer session times. Also, there has been some building in the IBBasic toolset going on, but it seems to be more exploratory or playing around at this point. For those who have used both the mobile and the IB winform style toolset, do you have a preference or any feedback? I'm learning all kinds of valuable lessons as I have fun coding :lol:
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 3116
Joined: Wed Nov 21, 2012 11:58 pm

Re: Slowdive's Little Daily Blog

Postby slowdive » Thu Dec 27, 2018 5:04 pm

So as I reflect back on 2018 and what was accomplished and I think about 2019 and what should I work on, I am leaning towards the following:

2018 was the year of IBbasic
I think IBbasic will be entering a maintenance stage at this point as I think all the features I wanted are there. I'll continue to fix bugs and polish as needed.

2019 I think will be the year of IBx
As Karl continues to add excellent features and grow IB, I'll copy over his code into the IBx code base. I'll also look at adding more platforms to it if possible such as MacOS, Linux, ChromeOS, etc.

Thoughts?
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 3116
Joined: Wed Nov 21, 2012 11:58 pm

Re: Slowdive's Little Daily Blog

Postby youngneil1 » Sat Dec 29, 2018 1:25 pm

This an absolutely awesome prospect :D , very much looking forward to the year of IBx!

It will be a dauting task (or so I think) due my still chaotic coding. I guess in many places it will the easiest way for you to replicate the new features, but with streamlined/fresh code. I will do my very best to act as sparing partner for this :) .

The new tutorial module I do right now should hopefully form a good base to get a grasp for at least the bulk of the new features.

This will be fun :D .
User avatar
youngneil1
Backer
Backer
 
Posts: 4942
Joined: Sat Dec 08, 2012 7:51 am

PreviousNext

Return to General IceBlink Project Discussions

Who is online

Users browsing this forum: No registered users and 2 guests

cron