Quick Links: Download Gideros Studio | Gideros Documentation | Gideros community chat | DONATE
Gideros 2024.6 Released — Gideros Forum

Gideros 2024.6 Released

hgy29hgy29 Maintainer
Hi everyone,

Gideros 2024.6 is out. It mostly bring fixes, but there is a possibly breaking change in the way device orientation is handled on iOS and Android: the auto-rotation setting, now in Graphics tab of project settings, used to enable the device to autorotate the canvas depending on physical orientation, in an all or nothing way.

Now you can select to allow normal orientation only (the one you choosed in orientation setting, that is fixed orientation), both normal and upside down, all orientations (4 or only 3 on some android devices), or only use whatever the system thinks is the best.

This is a quite complex change, so don't hesitate to report any issues with it.

Full change set:

Improvements

[export/ios] Allow changing keyboard type
[plugin/ogg] Support opus recording
[plugin/ogg] Support Theora encoding
[core] Rework screen orientation (breaking change)

Fixes

[gfx/textfield] Fix placement computations in texts
[export/apple] Fix special keys key codes for Mac
[export/oculus] fix menu action label
[gfx/path] Allow setLineThickness to be called before setPath()
[layout] Allow layout to be triggered when Sprite ios added to stage
[gfx/sprite] Add missing Sprite.STENCIL_GREATER definition
[plugin/camera] Fix for QT 6

Download it from here:
http://giderosmobile.com/download
Tagged:
+1 -1 (+7 / -0 )Share on Facebook

Comments

  • PaulHPaulH Member
    Thanks for the update! I really appreciate the steady stream of improvements and fixes!

    I'm seeing one strange issue, though. I see it in every build since 2024.3, and I wonder if may be related to the issues discussed in the 2024.3 announcement thread.

    What I'm seeing it that if at some point a sprite has no children, then a child is added before the next frame, then when garbage collection happens, it will corrupt that sprite, possibly releasing some memory that wasn't garbage. In some cases I see sprites distorted, and in other cases completely blank. This happens in the player and in exported apps, at least on Android.

    It's taken me quite a while to narrow this down to the point that the small block of code below reproduces the error. If the variable show_failure is nil, you'll see a text field immediately, and then another will be added 3 seconds later. If you uncomment the first line so show_failure is set to true the code will remove the first text field from the main sprite before adding the new one, and if that's done followed by a collectgarbage(), the screen goes blank after 1 frame, so both text fields are gone. In older versions of Gideros (definitely in 2023.11, but I think it may be anything older than 2024.3) it will display both text fields even if show_failure is set to true.

    Here's the code:
     
    --show_failure = true
    application:setLogicalDimensions(1920, 1080)
    application:setOrientation(Application.LANDSCAPE_LEFT)
     
    global_content_layer = Sprite.new()
    stage:addChild(global_content_layer)
     
    local tf = TextField.new(nil, "First text...")
    tf:setScale(5)
    tf:setPosition(100, 200)
    global_content_layer:addChild(tf)
     
    Timer.delayedCall(3000,
    	function()
    		local tf = TextField.new(nil, "New text")
     
    		if show_failure then
    			global_content_layer:removeChildAt(1)
    		end
     
    		-- Add new text:
    		tf:setScale(5)
    		tf:setPosition(100, 300)
    		global_content_layer:addChild(tf)
     
    		-- Collect garbage. If the main sprite had no children, this will collect some data that
    		-- isn't garbage and the screen will go blank:
    		collectgarbage()
    	end
    )

    Likes: MoKaLux, hgy29, pie

    +1 -1 (+3 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    Many thanks @PaulH for pointing out that bug, and even more for providing a reproducible test case, this is invaluable. I am investigating it already (spent two hours so far) and what I can tell at this point is that everything is handled correctly memory wise at CPU side, but somehow not at GPU side. I am trying to figure out.

    Likes: MoKaLux, PaulH

    +1 -1 (+2 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    edited June 21
    Found and fixed! It was caused by recent OpenGL backend optimizations in Gideros where I tried to avoid unnecessary OpenGL calls. There was a case where a just deleted buffer wasn't properly unbound, so that a subsequent buffer created with the same identifier wasn't re-bound to OpenGL context (since Gideros thought it was the same).
    Depending on the opengl driver, this could create loss of data or even crashes.

    If anyone is interested, here is the fix: https://github.com/gideros/gideros/commit/78f90039bc42c8da8d2ac8bbd78200d2698b37fe

    Likes: keszegh, pie, MoKaLux

    +1 -1 (+3 / -0 )Share on Facebook
  • hgy29hgy29 Maintainer
    Thinking of it @MoKaLux, this could well be the cause of the crash you had in opengl driver.

    Likes: MoKaLux

    +1 -1 (+1 / -0 )Share on Facebook
  • keszeghkeszegh Member
    thank @hgy29 ,
    it would be great if that was the only cause of crashes.
  • PaulHPaulH Member
    Thanks for the fix! I'm glad the sample code was helpful.

    Likes: MoKaLux, hgy29

    +1 -1 (+2 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited June 21
    hgy29 said:

    Thinking of it @MoKaLux, this could well be the cause of the crash you had in opengl driver.

    Indeed, I built Gideros with the new changes and tested my beat'em up, the Player crashes no more :)

    Thank you captain hgy29, mister PaulH and all of you guys (pals?) :)

    Likes: PaulH, hgy29

    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
    +1 -1 (+2 / -0 )Share on Facebook
  • MoKaLuxMoKaLux Member
    edited June 22
    Regarding the Qt build and full screen: when I now press ALT+ENTER the app not only freezes but now it force close as well, which is better than just freezing and not force closing.

    (Still working just fine in a win32 build)

    EDIT: clicking the maximize button (which goes to full screen in Qt!) works as expected
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
  • MoKaLuxMoKaLux Member
    MoKaLux said:

    Indeed, I built Gideros with the new changes and tested my beat'em up, the Player crashes no more :)

    EDIT: sorry but I experience some crashes from time to time, although far far less than before. Maybe something is still not freed?
    my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
Sign In or Register to comment.