Re: OSWindow and OSWindowDriver

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: OSWindow and OSWindowDriver

stepharo
Thanks matthieu.
This is a good description of our discussion and I did not get the time
to talk with esteban yet. So thanks!


Le 29/5/15 00:05, Matthieu Lacaton a écrit :

> Hello everyone,
>
> I'm writing here because I would like some insight about the
> OSWindowDriver.
>
> As you may know, the OSWindowDriver (via OSSDL2Driver) is responsible
> for many things in OSWindow such as setting up the event loop,
> creating the SDL window, etc.
>
> My first question is : How are you supposed to access the driver ?
>
> Currently you can do a "OSWindowDriver current" and it should return
> you the "most suited driver". It is the way the driver is picked if
> you don't specify a preferable driver in the OSWindow attributes.
> I see two problems with this :
>   - If you don't have the SDL plugin it returns you an
> OSWindowNullDriver and you cannot do anything with it even if you have
> the SDL library.
>   - Let's say that SDL does not meet my requirements and I create
> another binding to another library. I now have the possibility to use
> OSWindow with two different back-ends. How does the OSWindowDriver
> discriminates between the twos ?
>
> Now if I want to specify a driver I can do it by setting
> "preferableDriver" in the OSWindowAttributes.
> But if I want an OSSDL2Driver, the only way I see for the moment is to
> call "OSSDL2Driver new".
> But by doing so I am creating an instance of the driver per window
> created whereas with "OSWindowDriver current" I am only using one
> instance of the driver for all windows. I think something is not
> coherent here.
> So should all specific drivers be singletons ? Should they all
> implement their own version of the "current" method returning the only
> instance of them ?
>
> I have another remark too :
>
> The driver needs to keep a map of all active windows to be able to
> dispatch events to the correct one. But when a window is destroyed, it
> needs to be removed from the map so there is no mess in the events and
> so the garbage collector can free it.
> Currently the window map is a class variable of OSSDL2Driver. But I
> think the map should be common to all drivers because they would
> probably all need one. So I'd like to move the WindowMap class
> variable to the "OSWindowDriver" class directly


Reply | Threaded
Open this post in threaded view
|

Re: OSWindow and OSWindowDriver

Matthieu
Arf, I failed when I wrote this mail cause I accidently sent it before it was finished :s Could we all use the second one for the discussion please ?
I'm sorry :(

2015-05-29 6:50 GMT+02:00 stepharo <[hidden email]>:
Thanks matthieu.
This is a good description of our discussion and I did not get the time to talk with esteban yet. So thanks!


Le 29/5/15 00:05, Matthieu Lacaton a écrit :

Hello everyone,

I'm writing here because I would like some insight about the OSWindowDriver.

As you may know, the OSWindowDriver (via OSSDL2Driver) is responsible for many things in OSWindow such as setting up the event loop, creating the SDL window, etc.

My first question is : How are you supposed to access the driver ?

Currently you can do a "OSWindowDriver current" and it should return you the "most suited driver". It is the way the driver is picked if you don't specify a preferable driver in the OSWindow attributes.
I see two problems with this :
  - If you don't have the SDL plugin it returns you an OSWindowNullDriver and you cannot do anything with it even if you have the SDL library.
  - Let's say that SDL does not meet my requirements and I create another binding to another library. I now have the possibility to use OSWindow with two different back-ends. How does the OSWindowDriver discriminates between the twos ?

Now if I want to specify a driver I can do it by setting "preferableDriver" in the OSWindowAttributes.
But if I want an OSSDL2Driver, the only way I see for the moment is to call "OSSDL2Driver new".
But by doing so I am creating an instance of the driver per window created whereas with "OSWindowDriver current" I am only using one instance of the driver for all windows. I think something is not coherent here.
So should all specific drivers be singletons ? Should they all implement their own version of the "current" method returning the only instance of them ?

I have another remark too :

The driver needs to keep a map of all active windows to be able to dispatch events to the correct one. But when a window is destroyed, it needs to be removed from the map so there is no mess in the events and so the garbage collector can free it.
Currently the window map is a class variable of OSSDL2Driver. But I think the map should be common to all drivers because they would probably all need one. So I'd like to move the WindowMap class variable to the "OSWindowDriver" class directly