How to tell when IDE is done loading

Michael Doub mikedoub at gmail.com
Sun Dec 28 10:29:26 EST 2014


Jacqueline, I do think that there is a timeing issue that you have to be 
aware of if you a calling revloadedstacks.
But something strange _IS_ going on.

Please create a stack and enter the script below into the stack script 
and save the stack and quit livecode.   Doubleclick on the stack icon.

You should see...

false
preOpenStack
true
Startup Complete

This is the expected behavior.   Note that the preOpenStack handler is 
called before the IDE home stack has finished initialization. This can 
clearly be seen if you watch the message box closely.

Now close the stack and remove it from memory and then open the stack.   
I do not get the expected behavior.  It seems that allowinterupts is set 
to false.   I get false on a clean start of livecode and checking 
allowinterrupts from the message box too.

Can you confirm what I am seeing or explain what is going on, or have I 
found a bug?  it appears to me that somewhere in the IDE, allowinterupts 
is being set to false again after the main startup code in the home 
stack resulting in the default state to be incorrect.

Regards,
    Mike


local ctr

on preopenstack
    put the allowinterrupts & cr
    send "Mark_IDE_done" to me in 2 ticks
    put "preOpenStack" & cr
end preopenstack

on Mark_IDE_done
    add 1 to ctr
    put  allowinterrupts & cr after msg
    if allowinterrupts = false then
       if ctr < 25 then
          send "Mark_IDE_done" to me in 2 ticks
       end if
    else
       put "Startup Complete" & cr after msg
    end if
end Mark_IDE_done



On 12/27/14 11:29 AM, J. Landman Gay wrote:
> I'm confused. LiveCode knows how to open a stack as part of its startup routine. Since  card 1 is always opened first, a preopenstack handler there will always fire and you can do your setup there from that card without worrying about timing.
>
> On December 27, 2014 10:12:19 AM CST, Michael Doub <mikedoub at gmail.com> wrote:
>> Jacqueline and Mike, thanks for you help with this.
>>
>> Just to clarify,  I am trying to solve the problem in the environment
>> where livecode is not running and the user double clicks on the
>> MasterLibrary stack.   This is not a standalone program but a stack
>> that
>> is being started from the desktop.  I am testing on a Mac, but I need
>> to
>> test on a PC to see if the behavior is any different.
>>
>> Mike, I think you gave me a great clue.   The current logic in the
>> MasterLibrary is one where the preopenstack handler puts up a splash
>> screen and sends off a wakeup message to come back in 5 seconds.  I was
>>
>> quite surprised to see how long it actually took the IDE to get
>> initialized.  This is way too long to wait if livecode is already up
>> and
>> running.
>>
>> I added some debug code to display the allowinterupt state and found
>> that at the time my preopenstack handler messages gets called
>> allowinterupts is false, but in my wakeup hander the allowinterupts is
>> true.  This leads me to believe that I can monitor the allowinterupts
>> at
>> a faster frequency and do the actual wake up processing when I see it
>> go
>> true.
>>
>> Regards,
>>      Mike
>>
>>
>> On 12/26/14 4:38 PM, Mike Bonner wrote:
>>> It looks like the IDE load order is this:
>>> System params are checked
>>> libraries loaded
>>> globals set
>>> preferences set
>>> icons loaded
>>> patterns loaded
>>> script editor loaded
>>> user icon libraries loaded
>>> error management loaded
>>> tools loaded
>>> menu bar loaded
>>> app overview loaded
>>> message box loaded
>>> debugger loaded
>>> quicktime loaded
>>> plugins loaded
>>> then "revInternail_InitializeFinalSteps..
>>> after that, there are still a couple things such as checking the
>> license
>>> being used (community etc) and setting some os specific parameters.
>> The
>>> very last thing (it seems) is the line "set the allowinterrupts to
>> true"
>>> You can see this info in the script of stack home.rev, handler
>>> revInternal_openStack.  Wonder if there is something in that script
>> you can
>>> check to determine if the IDE is far enough along to do the things
>> you
>>> need.
>>>
>>>
>>> On Fri, Dec 26, 2014 at 1:31 PM, J. Landman Gay
>> <jacque at hyperactivesw.com>
>>> wrote:
>>>
>>>> On 12/24/2014 11:57 AM, Michael Doub wrote:
>>>>
>>>>> I have tried that but I need to process the resumeStack message
>> which
>>>>> seems to get called as part of the startup process.
>>>>>
>>>> Resumestack shouldn't be sent normally when a stack opens. There's a
>>>> difference between starting up a standalone and starting the IDE
>> though; it
>>>> may be that some of the IDE stacks need to deal with resumestack.
>> But your
>>>> own stack shouldn't need to.
>>>>
>>>>    I guess I have to
>>>>> manually set a global flag and have the timed handler unblock the
>>>>> flag.   What is the very first handler that an application can
>> process?
>>>>> Startup?
>>>>>
>>>> Again, it depends. In a standalone the first message is startup. The
>> stack
>>>> isn't fully loaded at that point so you can't manipulate stack or
>> card
>>>> objects yet but you can set global properties there.
>>>>
>>>> But in the IDE, LiveCode itself catches the startup message and your
>> stack
>>>> will never receive it. The first message your stack will get is
>>>> preOpenStack.
>>>>
>>>>
>>>>    Is there an ordered list of messages that are fired for startup
>> and
>>>>> opening a stack?  Opening a card would be useful too.   I can't say
>> that
>>>>> I have ever seen this anywhere in the documentation.
>>>>>
>>>> It follows the normal message path in reverse, starting with the
>> stack
>>>> messages followed by background group messages and then card
>> messages. If
>>>> there are card groups on the first card, they get sent last.
>>>>
>>>> --
>>>> Jacqueline Landman Gay         |     jacque at hyperactivesw.com
>>>> HyperActive Software           |     http://www.hyperactivesw.com
>>>>
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the use-livecode mailing list