Image Processing Makes Livecode Appear to Crash
Phil Davis
revdev at pdslabs.net
Mon Feb 17 19:06:26 EST 2014
Ray,
Not sure, but it might make a difference if you update the cursor only
every 10th or 20th time through the loop. Like so:
put 0 into x
repeat
add 1 to x
if x mod 10 = 0 then set cursor to busy
....
end repeat
Best -
Phil Davis
On 2/17/14, 2:15 PM, Ray wrote:
> OK - that trimmed about 35 seconds off a 40 second loop with the image
> I was using. Many thanks! I think the deleting of characters was
> slowing it down.
>
> On 2/17/2014 4:41 PM, Paul Dupuis wrote:
>> No ideas on speeding it up. The only thought looking at the code is you
>> may want to replace 'char' with 'byte' ( and numToChar with numToByte)
>> since you are really dealing with bytes rather than characters and in
>> future LiveCode versions, char may not always correspond to a single
>> byte.
>>
>> I might suggest avoiding the delete operation and just try indexing the
>> imageData and alphaData
>>
>> put the number of bytes in totAlphaData into tLoopSize
>> repeat with i=1 to tLoopSize
>> if byte (i*4-2) to (i*4) of totColorData = binColor then put bin0
>> into
>> byte i of totAlphaData -- else byte i remains as is
>> set cursor to busy
>> wait for 0 milliseconds with messages
>> end repeat
>> set the alphadata of img 1 to totAlphaData
>>
>> On 2/17/2014 3:16 PM, Ray wrote:
>>> That works great! And a little experimenting shows that waiting 0
>>> milliseconds accomplishes the same goal without significantly slowing
>>> down an already slow handler. Not to sound greedy but you wouldn't
>>> also have any idea how to speed up this loop would you?
>>>
>>> Thanks,
>>>
>>> Ray
>>>
>>> On 2/17/2014 2:57 PM, Paul Dupuis wrote:
>>>> Ray,
>>>>
>>>> Is this behavior (title bar saying "not responding", etc.) happening
>>>> under Windows 8 perchance?
>>>>
>>>> If so, we've seen the same or similar behavior under Windows 8 in long
>>>> repeat loops. We've found that including a "wait for 1 millisecond
>>>> with
>>>> messages" line in the loop and this mostly lets Windows think the
>>>> application is in fact responding. I say mostly because if you
>>>> watch the
>>>> task manager, the app switches between "not responding" and responding
>>>> (i.e. no note next to the name) with some regularity. Without the
>>>> "wait"
>>>> statement in the loop the app is listed in the task bar
>>>> continuously as
>>>> "not responding" while the loop is executing.
>>>>
>>>> Paul Dupuis
>>>> Researchware
>>>>
>>>> On 2/17/2014 1:24 PM, Ray wrote:
>>>>> Fellow LC Users,
>>>>>
>>>>> I'm trying to provide users with a 'magic wand' style tool. Click an
>>>>> image, pick up the color clicked and turn every pixel of that same
>>>>> color in the image transparent.
>>>>>
>>>>> The loop I've written takes about 30 seconds to run on a 600 by 700
>>>>> pixel image, which is a problem, but worse, click anywhere before
>>>>> it's
>>>>> finished and Livecode 'appears' to crash. I say 'appears' because
>>>>> the
>>>>> cursor turns into the crash cursor and the title bar displays 'not
>>>>> responding'. After the loop is done Livecode returns to normal.
>>>>>
>>>>> I'll include the loop, below.
>>>>>
>>>>> How do I stop LC from appearing to crash while running this loop, or
>>>>> how to speed it up.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Ray
>>>>> LinkIt! Software
>>>>>
>>>>> on mouseUp
>>>>> lock messages
>>>>> put the mousecolor into myColor
>>>>> put the mouseloc into myLoc
>>>>> put the imagedata of img 1 into totColorData
>>>>> put the alphadata of img 1 into totAlphaData
>>>>> put numToChar(item 1 of myColor) into binColor
>>>>> put numToChar(item 2 of myColor) after binColor
>>>>> put numToChar(item 3 of myColor) after binColor
>>>>> put numtochar(0) into bin0 -- transparency
>>>>> repeat for each char curBin in totAlphaData
>>>>> if char 2 to 4 of totColorData = binColor then
>>>>> put bin0 after newAlphaData
>>>>> else put curBin after newAlphaData
>>>>> delete char 1 to 4 of totColorData
>>>>> set the cursor to busy
>>>>> end repeat
>>>>> set the alphadata of img 1 to newAlphaData
>>>>> end mouseUp
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>
>
>
> _______________________________________________
> 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
>
--
Phil Davis
More information about the use-livecode
mailing list