Git Product home page Git Product logo

Comments (3)

Ragnar-H avatar Ragnar-H commented on June 4, 2024 1

@bryphe I suspect the solution is to expose the SDL_WINDOWFLAGS to the Sdl2.Window.create call in Window.re

I'm happy to take this on, although I expect I'll need some help since there's some C plumbing I'm not immediately familiar with :)

from revery.

Ragnar-H avatar Ragnar-H commented on June 4, 2024 1

Thanks @bryphe!

My time contributing to OSS is very sporadic but let's see if I can get to this :) I'll drop a comment if I start digging into this.

If anyone else is reading this and is missing the functionality feel free to jump on this 🤝

from revery.

bryphe avatar bryphe commented on June 4, 2024

Hi @Ragnar-H ,

Thanks for logging the issue and all the details! This would certainly be a nice improvement - it can help reduce flicker when starting up apps to start them hidden, and then show them once everything has been loaded / setup.

The simplest fix would probably be to add a flag here:

CAMLprim value resdl_SDL_CreateWindow(value vName, value vX, value vY,

These places would also need to be updated:

(and then, validating that the window can be shown after being hidden is important - I think the current SDL_ShowWindow is the right thing for that, though).

A larger, but more flexible, fix would be as you suggested - expose the SDL_WINDOWFLAGS as something we can build and pass from Reason to the C stubs. We have the flags hard-coded here:

SDL_WINDOW_OPENGL | SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_RESIZABLE));

One idea would be to pass a uint to our CreateWindow API, and have a module like WindowFlags that can be used with that API, like:

module WindowFlags: {
   // Internally, this would be a uint
   type t;
   
   type flags = 
   | Hidden
   | OpenGL
   | Fullscreen
   | ...;
   
   // The default set of flags we use currently - OpenGL, HighDPI, Resizable
   let default: t;

   let make: list(flags) => t;
}
...

module Window: {
   let create: (~flags=WindowFlags.default, ...);
}

Hope that helps give some ideas!

from revery.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.