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@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@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@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@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


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to