[Vm-dev] Another NuScratch issue

Eliot Miranda eliot.miranda at gmail.com
Sun Nov 22 05:26:51 UTC 2020


Hi Yoshiki,

  Levente replaced the select code with epoll code on Linux a fey weeks ago.  Maybe there’s a regression.

_,,,^..^,,,_ (phone)

> On Nov 21, 2020, at 10:28 AM, Yoshiki Ohshima <Yoshiki.Ohshima at acm.org> wrote:
> 
> 
> 
> 
>> On Sat, Nov 21, 2020 at 9:42 AM Yoshiki Ohshima <Yoshiki.Ohshima at acm.org> wrote:
>> 
>> 
>>> On Sat, Nov 21, 2020 at 9:32 AM Yoshiki Ohshima <Yoshiki.Ohshima at acm.org> wrote:
>>> 
>>> 
>>>> On Fri, Nov 20, 2020 at 5:11 PM Yoshiki Ohshima <Yoshiki.Ohshima at acm.org> wrote:
>>>> 
>>>> 
>>>>> On Fri, Nov 20, 2020 at 4:50 PM tim Rowledge <tim at rowledge.org> wrote:
>>>>>  
>>>>> 
>>>>> 
>>>>> > On 2020-11-20, at 3:10 PM, Yoshiki Ohshima <Yoshiki.Ohshima at acm.org> wrote:
>>>>> > 
>>>>> > So I built a new VM with a  fix  for the input method change.  I did not fully test the other things but Scratch on the VM does not do animations. It updates screen only when mouse is moved, or some slower interval:
>>>>> > 
>>>>> > https://photos.app.goo.gl/QHgKCeeP2bnQGESu5
>>>>> 
>>>>> That's really weird. I see two systems running at the same time there - same image? Different VM?
>>>> 
>>>> Yeah, those are running the same image on different VMs. 
>>>>> 
>>>>> > 
>>>>> > I suspect that there might have been some options I needed to pass in to specify some timers?  Can you think of other reasons why this might happen and where to look to fix it?
>>>>> 
>>>>> I never had any timer related options to worry about, so it shouldn't be anything to do with that.
>>>>> 
>>>>> What happens if you use the 'new' VM but don't use the compositor/input thing? IIRC I had terrible problems caused by that ibus program and we had to make sure it didn't get into the Raspbian release.
>>>> 
>>>> I'll check it out. I wasn't expecting this kind of problem and did not fully test things out.
>>> 
>>> Not having compositioninput does not fix the problem. With a non-scratch image and I run BouncingAtomsMorph, the screen update on my VM is one frame per second unless I move the mouse pointer.
>>> 
>>> Which function to obtain the current time to tell the VM to run the next event loop? I can check if it is called.
>> 
>> One datapoint is that making the  argument for aioSleepForUsecs in display_ioRelinquishProcessorForMicroseconds() to be always zero:
>> 
>> static sqInt display_ioRelinquishProcessorForMicroseconds(sqInt microSeconds)
>> {
>>    aioSleepForUsecs(handleEvents() ? 0 : 0); // aioSleepForUsecs(handleEvents() ? 0 : 1000); 
>>   return 0;
>> }  
>> 
>> makes it run smoothly. So the return value from handleEvents() would have to make sense.
>> 
>> (still investigating..)
> 
> So the handleEvents() looks like this: 
> 
> --------------------
> int handleEvents(void)
> {
>   if (recordPendingKeys())
>     return 0;
> 
>   if (!isConnectedToXServer || !XPending(stDisplay)) {
>     return !iebEmptyP();
>   }
> 
>   while (XPending(stDisplay))
>     {
>       XEvent evt;
>       XNextEvent(stDisplay, &evt);
>       handleEvent(&evt);
>     }
>   return 1;
> }
> --------------------
> but the part that affecting the animation performance is "return !iebEmptyP()". If I take out "!", it tells the caller that it handled an event when (?) not collected to the X server (which is a weird test) or not X event is not pending, check if the input event buffer is empty or not.
> 
> This check may be okay but needs some clarifications.
> 
> But I suspect that aioSleepForUsecs() on this platform may be sleeping given milliseconds and not microseconds. That may be consistent with the symptom of waking up at every second...
> 
> -- 
> -- Yoshiki
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20201121/dba7f00f/attachment.html>


More information about the Vm-dev mailing list