Here's an odd one... I am working on a Xojo Desktop application that incorporates the AloeExpress module. The application is a touch-screen app that runs on a Raspberry Pi. The code is working great. But... (and there's always a but) I noticed that my application no longer autostarts when the Raspberry Pi boots-up.
I tried a whole range of things to try and isolate the problem. I also tried running the application on another Raspberry Pi with a freshly created Raspbian image. But no luck. I've never had a Xojo application fail to autostart before.
After many hours of trial and error I noticed a few things:
1) The Raspberry Pi was taking longer than normal to boot-up and display the Raspbian desktop.
2) If I tried to launch my application immediately after the Raspbian desktop appeared, the mouse-pointer would indicate busy for maybe 15 seconds and then nothing... the application wouldn't start.
3) If I waited for 30 seconds or so after the Raspbian desktop appeared the application would start right up.
I tried to log the start-up events to see where the application was failing and found that no logging occurred. It appears that the application was dying before it even fully loaded. I built a very simple "hello world" desktop application and set it up to autostart and found that it started just fine (I wanted to see if my upgrade to Xojo 2018r4 might be the problem).
At this point I was getting desperate and started deconstructing my application until it would autostart. What I found surprised me. After several rounds of deconstruction I found that removing all references to AloeExpress allowed the application to autostart!
So, It looks to me as though something in the initialization of AloeExpress is looking for a service of some other dependency that doesn't exist until quite a few seconds after the Raspbian desktop is visible.
I don't want to resort to this, but I may have to create a "splash screen" that autostarts, waits for 30 seconds or so and then launches my application. But I'd really like to know what is failing to be found or initialized during the start-up of my application. If I knew what it was I could simply wait for that resource to be ready before initializing AloeExpress.
The Raspberry Pi is a great little computer but it certainly has its fair share of idiosyncrasies.
Do you have any thoughts on this?