> Am 18.04.2018 um 14:31 schrieb H. Nikolaus Schaller <h...@goldelico.com>: > > Hi all, > >> Am 18.04.2018 um 08:20 schrieb H. Nikolaus Schaller <h...@goldelico.com>: >> >> Hi Sebastian, >> >>> Am 17.04.2018 um 21:45 schrieb Sebastian Krzyszkowiak <d...@dosowisko.net>: >>> >>> On Tue, Apr 17, 2018 at 9:09 PM, H. Nikolaus Schaller <h...@goldelico.com> >>> wrote: >>>> >>>> Am 17.04.2018 um 21:05 schrieb H. Nikolaus Schaller <h...@goldelico.com>: >>>> >>>> Hi Sven, >>>> >>>> Am 17.04.2018 um 16:31 schrieb Sven Dyroff <s.dyr...@phytec.de>: >>>> >>>> Hello Nikolaus, >>>> >>>>> It looks as if it is much more often reporting accelerometer events (ca. >>>>> 15ms) than the 4.16 kernel (ca. 100-200ms). >>>> >>>>> But neither change has the effect of making the graphics faster and >>>>> smoother. >>>> >>>>> So there is likely a third factor involved when comparing to GTA02. >>>> >>>> no, I think you've found the cause! >>>> >>>> 100-200ms results in a frame rate of 5 to 10 Hz which is awfully slow! >>>> >>>> >>>> Unfortunately no. Would be too simple... >>>> >>>> There is a background thread that reads the accelerometer every now and >>>> then >>>> and >>>> simply returns the last value each time it is called. So these speeds are >>>> completely >>>> decoupled! QtMaze does not see any delay in code when calling getacx(). >>>> This >>>> returns the value of a global variable that is updated by the background >>>> thread. >>>> >>>> The accelerometer delay can only be recognized by a delayed reaction but >>>> has no influence on the frame rate. So graphics should not have small jumps >>>> if >>>> you don't move the device... >>>> >>>> So we still have to dig deeper into it... For example someone could look >>>> into the sources of QtMaze how the display redrawing is done. >>>> >>>> >>>> It is here: >>>> >>>> http://git.goldelico.com/?p=gta04-qtmoko.git;a=tree;f=src/3rdparty/games/qtmaze;h=38f4df583bba2a4712baf40915bc0026fb16dc8d;hb=398d5c957571fed6b63174cfd2e4b6d57aeff9a4 >>> >>> From a quick glance at the code (form.cpp) is looks like the ball is >>> moved only in the MoveBall method, which is called only in the >>> callback from accelerometer thread (and in some other function too, >>> but that function is also called only from that same callback). >>> In the library, accel_work (the accelerometer thread) calls >>> accelerometer_moo in a while loop until it gets a measurement and only >>> then calls the QtMaze's callback, which seems to be the only way to >>> actually update the ball's position. >>> >>> It shouldn't really work that way, and I there's a possibility that >>> I'm mistaken since I just had a few minutes look into a codebase I >>> never seen before, but it does really seem that by lowering the >>> accelerometer read rate you'll get lowered ball movement frame rate in >>> QtMaze :) >> >> Thanks for looking into this! >> >> Well, if your analysis is right, then QtMaze was developed on the >> false assumption that accelerometer callbacks come in fast and well >> clocked steps. >> >> But the kernel and the accelerometers.cpp try their best to filter >> out unneeded callbacks... >> >> Well, I have a simple idea for a fix: remove the dependency of calling the >> callback from really having received new data from the kernel. >> >> I.e.: >> >> while ( !(my_thread_data->finished) ) { >> >> /* Call accelerometer_moo() until we have an >> acceleration measurement. */ >> accelerometer_moo(accel); >> >> /* If the library user specified a callback, call >> it. */ >> if (my_thread_data->callback) >> (*my_thread_data->callback)(my_thread_data->closure, >> acx, acy, acz); >> /* Sleep before taking another measurement. */ >> usleep(my_thread_data->interval_us); >> } >> >> So we do not call accelerometer_moo() until we have a measurement >> but we call it once every interval_us. And do the callback once. >> >> This should then become the timer triggering a redraw and should >> be almost equidistant. >> >> It is then the same as for the GTA02 code which calls the callback once >> per loop... > > Ok, this works. The ball is now moving fast like hell... > IMHO too fast, but it now looks like with the GTA02 video. > > Same on the Pyra, but there, ball movements get completely stuck > after some seconds. evtest /dev/input/accel still reports events > and QtMaze still is responsive to the touchscreen, but no longer to the > accelerometer. So this is some other bug... > > I'll now push the update to the server. Please try an apt-get upgrade in > some hours (should load & install qtmoko-gta04_60.20180418-1_armhf.deb ).
And here is a new video: https://youtu.be/DSbuXz_EZTo _______________________________________________ Gta04-owner mailing list Gta04-owner@goldelico.com http://lists.goldelico.com/mailman/listinfo.cgi/gta04-owner