On 10/04/2011 03:36 AM, Cedric BAIL wrote:
> On Tue, Oct 4, 2011 at 9:30 AM, Christopher Michael
> <cpmicha...@comcast.net>  wrote:
>> On 10/03/2011 10:06 PM, Youness Alaoui wrote:
>>>    Hey Gustavo!
>>> Thanks for answering my email! It's appreciated.
>>> However it didn't answer my questions, because basically, no, I'm not going
>>> to implement a window manager for the PS3 :) Don't forget that all
>>> applications/games will be full screen windows, and that 0.1% of people (a
>>> lot less I'm sure) actually have a mouse/keyboard hooked to their ps3, so
>>> having multiple windows is not a solution. I'm ok with single window apps,
>>> and while I do want to have interoperability with existing EFL apps without
>>> (or few) modifications, I mostly want something for new app development and
>>> a clear API on how to change resolution and how to handle the situation I
>>> explained.. most importantly, I'm not going to implement a WM, compositor,
>>> wayland or anything fancy like that :)
>>> I am not focusing on multi window apps, in my previous email, when I said I
>>> used elementary_test, I failed to mention I only ran it with --test-win-only
>>> to make sure only one window is created, so this is not the issue here.
>>>
>>> I like the screen_geometry_set and screen_modes_list, but I think they
>>> should go into evas or ecore-evas rather than elm, because they might be
>>> useful to people not using elm.
>>
>> Agree with this...tho perhaps ecore_x is a better place ?? Then it would
>> be available to ecore_evas or other apps outside via Ecore_X ?
>>
>>> E17 has a resolution config dialog, how does it get/set the screen's
>>> resolution? I suppose by using xrandr or something like that? maybe we can
>>> abstract that into evas directly, this way it would work on non-X backends
>>> like framebuffer/ps3.
>>>
>> ecore_x_randr_screen_primary_output_current_size_get
>> ecore_x_randr_screen_primary_output_orientation_get
>> ecore_x_randr_screen_primary_output_refresh_rates_get
>>
>> So on and so forth....
>>
>> Hence why I think (with the above) that ecore_x would be a better place...
>
> Hum, he doesn't have X on it's PS3, so maybe Ecore_Evas would be the
> right place to add this stuff and could use ecore_x when under X.
>
> Cedric
>
Ahhh, well without X then being in ecore_x would be pointless :/ Yea, 
ecore_evas then ;)

dh

>>> What I have done for now is use the fullscreen flag to decide whether or not
>>> to call the resized callback with the full screen size (scale or resize
>>> window). If we add the modes_list and screen_geometry_set functions then it
>>> would fix a few of the issues I had.
>>>
>>> Thank you,
>>> Youness.
>>>
>>>
>>> On Sat, Oct 1, 2011 at 10:51 AM, Gustavo Sverzut Barbieri<
>>> barbi...@profusion.mobi>    wrote:
>>>
>>>> Hi kakaroto, I'm at an event and I assume I couldn't read it all, but ad
>>>> I'm
>>>> postponing the reply and nobody else did, here comes my main concern and
>>>> idea:
>>>>
>>>
>>>>     The mapping is not the best one. Instead of window to screen, it would 
>>>> be
>>>> better to have something else that maps to screen and inside it a window.
>>>>
>>>> Think wayland, but we all will complain about porting it.
>>>>
>>>> That said, to simplify stuff I propose: create a simple hardware screen
>>>> manager. It would list and set resolution, defaults to highest. Windows are
>>>> painted inside it, even composited and fullscreen case handled. Windows
>>>> decorations and positioning can be handled or not.
>>>>
>>>> Main concerns: damn will we create another x11? Why not port it? Why not
>>>> wayland? IMHO it is not worth the effort, because we're focusing single
>>>> process apps with multi windows.
>>>>
>>>> Implementation proposal: create 2 ecore-evas, one setups the actual
>>>> hardware
>>>> (done) and another that talks to it and maps ecore-evas to inner windows in
>>>> main ecore-evas. Composition is for free, etc. Would be useful for
>>>> framebuffer and sdl as well. Elm could just use this second one only.
>>>> Optimizations can come later on how to use hardware acceleration and maybe
>>>> avoid double buffeting for fullscreen windows.
>>>>
>>>> Window decorations and handling: well need it in elm if we go to wayland
>>>> and
>>>> want to run in desktops.
>>>>
>>>> Todo:
>>>>    - ecore_evas_engine_modes_list("engine") ->    [{width, height, depth,
>>>> "options string"}, ...]
>>>>    - elm: engine using ecore_evas_object_image_add(). It would create and
>>>> manage Ecore_Evas used to hold it, sets to highest or given in $ELM_ENGINE
>>>> or config
>>>>
>>>> Extra:
>>>>    - elm_screen_geometry_{get,set}() ->    bool (may fail)
>>>>    - elm_screen_modes_list()
>>>>    - window decorations and management provided automatically by elm if in
>>>> sub window mode
>>>>
>>>> Comments?
>>>>
>>>>
>>>>
>>>> On Wednesday, September 28, 2011, Youness Alaoui<
>>>> kakar...@kakaroto.homelinux.net>    wrote:
>>>>> Hi all,
>>>>>
>>>>> As you know, I'm doing the PS3 port of the EFL and I'm finding myself in
>>>> a
>>>>> bit of a tricky situation, let me explain :
>>>>> The PS3 is a console that outputs to a TV... TVs can do different
>>>>> resolutions, 480, 720p or 1080p (as well as a few others). The SDK allows
>>>> us
>>>>> to know what the TV screen supports, and we can choose to switch to
>>>> whatever
>>>>> resolution we want that the TV supports.
>>>>> What I initially did in the evas engine was that I would take whatever
>>>> size
>>>>> the application requested (evas_output_size_set) and set my buffer to it,
>>>>> then find the closest matching resolution (the smallest difference in
>>>> area
>>>>> between that resolution and the resolutions supported by the TV), and set
>>>>> the TV to that res, then scale the output when I draw on screen. So
>>>>> basically, you'd resize your evas to 200x200 and it would be seen
>>>> internally
>>>>> as 200x200 but the engine would scale it to 720x480 for the screen.
>>>>>
>>>>> The issue came when I ported elementary. Most (all?) elementary tests
>>>> (from
>>>>> elementary_test app) would create the evas with resolution 1x1 then they
>>>>> would resize the window to whatever they want, but I never received that
>>>>> size change request and my buffer would stay at 1x1 and scale that up.
>>>> The
>>>>> reason is that the ecore_evas_resize has a nice little check :
>>>>>    if (ee->prop.fullscreen) return;
>>>>> so the resize would never work. I 'fixed' it by removing the fullscreen
>>>> flag
>>>>> for the ps3 engine.
>>>>>
>>>>> Other issue I got was that when I scale, I lose the aspect ratio which
>>>> might
>>>>> look great. so I'm thinking of adding a way to tell the engine if we want
>>>> to
>>>>> keep the aspect ratio (then it would center the scaled image on screen)
>>>> or
>>>>> stretch it completely. Is there a way to set this up natively with the
>>>> API
>>>>> without having an engine specific option ?
>>>>> Raster said that fullscreen engines need to tell the screen resolution to
>>>>> the app, so what I did was to also add a call to the resize callback
>>>> after
>>>>> we get resized, more precisely, you set your window to 200x200, you get a
>>>>> resize callback of your 200x200 then it will fetch the real current
>>>>> resolution (720x480) then send another resize callback with the full
>>>>> resolution. Question here, should I do it like that or should I only sent
>>>> a
>>>>> single resize callback? Most importantly, what happens when the client
>>>>> didn't register his callback yet? for example, eskiss would do the
>>>>> ecore_evas_new with its 1280x768 resolution request, *then* do the
>>>>> callback_resize_set (but it's too late since the resize callback was
>>>>> 'called' during the new), and since it never calls the ecore_evas_resize
>>>>> afterwards, it never knows that the evas it's working on has been
>>>> resized.
>>>>> What should be the fix for that? should the
>>>> ecore_evas_callback_resize_set
>>>>> call the callback with the current resolution the first time it's called?
>>>> Or
>>>>> should we workaround it by always creating 1x1 windows and then call the
>>>>> ecore_evas_resize after we set a callback (in which case it might cause
>>>> the
>>>>> tv screen to switch resolutions twice for no reason)?
>>>>>
>>>>> Finally, my current biggest design issue, is how to decide whether or not
>>>> to
>>>>> tell the application that it has been resized to fit the screen. In other
>>>>> words, what if someone wants the window to be 200x200 and get scaled and
>>>>> doesn't actually want to be rendering on 720x480? What if the window has
>>>> a
>>>>> min/max size set to it? In the case of eskiss, I get a smooth 60fps on
>>>>> 1280x768, but when it tries to draw on any other resolution, its
>>>> performance
>>>>> drops to 2 or 3 fps (I still have no idea what causes this performance
>>>>> loss), so for eskiss for example, I wouldn't want to have the resize
>>>>> callback called and evas_output_size_set called to resize evas to the
>>>> screen
>>>>> resolution, I'd want it to stay at 1280x768 and have the engine scale
>>>> that
>>>>> to whatever the screen wants (and even if we fixed that performance
>>>> issue,
>>>>> if the TV only supports 480p SD resolutions, eskiss just won't work
>>>> because
>>>>> the levels and menus, etc.. were not designed for anything less than
>>>>> 1280x768.. and they will not look good on 1920x1080 either).
>>>>> One thought I had was the fullscreen flag.. if the fullscreen flag is
>>>> set,
>>>>> then I'd call the resize callback and resize evas to fit the screen
>>>>> resolution, if it's not set, then I would just scale. This brings up the
>>>>> issue of the ecore_evas_resize not working in fullscreen mode.. what if I
>>>>> want to change the screen resolution? I'd have to unset the fullscreen
>>>> flag,
>>>>> then resize, then set it back again (imagine a game where you can choose
>>>> the
>>>>> fullscreen resolution in the game's video options). That seems like an
>>>> ugly
>>>>> hack.
>>>>> Maybe I should use the maximized flag instead in that case.. in which
>>>> case,
>>>>> does any of these flags affect how evas/ecore_evas/elementary work? or is
>>>>> that only engine specific stuff ? Obviously the fullscreen flag affects
>>>>> ecore_evas (since it skips the resize command), will there be any other
>>>>> similar side effects if I make the window have the maximized flag or not?
>>>> I
>>>>> feel like it would make sense to have the engine set the maximized and
>>>>> fullscreen flags, because that's how it really is, and it seems the EFL
>>>> was
>>>>> not designed for these use cases..
>>>>>
>>>>> What do you think? Any suggestions as to how to design this so it fits
>>>> the
>>>>> EFL design and it works properly and allows for all our use cases without
>>>>> any hackish workarounds?
>>>>>
>>>>> I know this was a long email, sorry about that... To summarize, here were
>>>>> the questions I asked for which I'd like an answer :
>>>>> - Is there a way to tell the engine to stretch/scale/keep aspect ratio,
>>>>> using the current API, or should I set an engine specific option ?
>>>>> - Should I send two resize callback (one for the requested size followed
>>>> the
>>>>> screen size) or a single one (final resolution) when a resize is
>>>> requested?
>>>>> - How can we fix the issue where the window gets resized between the call
>>>> to
>>>>> _new and _callback_resize_set? Have the callback_resize_set call the
>>>>> callback right away with the current resolution ?
>>>>> - How should I decide on whether to scale or not the window (call the
>>>> resize
>>>>> callback with the current screen or leave it as is and just scale the
>>>>> window) ?
>>>>> - How can I handle the min/max properties on a window ?
>>>>> - What side effects does the maximize and fullscreen flag have other than
>>>>> engine specific, for non-windowed systems ?
>>>>>
>>>>> Thank you!
>>>>> KaKaRoTo
>>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>>> All the data continuously generated in your IT infrastructure contains a
>>>>> definitive record of customers, application performance, security
>>>>> threats, fraudulent activity and more. Splunk takes this data and makes
>>>>> sense of it. Business sense. IT sense. Common sense.
>>>>> http://p.sf.net/sfu/splunk-d2dcopy1
>>>>> _______________________________________________
>>>>> enlightenment-devel mailing list
>>>>> enlightenment-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>>>>
>>>>
>>>> --
>>>> Gustavo Sverzut Barbieri
>>>> http://profusion.mobi embedded systems
>>>> --------------------------------------
>>>> MSN: barbi...@gmail.com
>>>> Skype: gsbarbieri
>>>> Mobile: +55 (19) 9225-2202
>>>>
>>>> ------------------------------------------------------------------------------
>>>> All of the data generated in your IT infrastructure is seriously valuable.
>>>> Why? It contains a definitive record of application performance, security
>>>> threats, fraudulent activity, and more. Splunk takes this data and makes
>>>> sense of it. IT sense. And common sense.
>>>> http://p.sf.net/sfu/splunk-d2dcopy2
>>>> _______________________________________________
>>>> enlightenment-devel mailing list
>>>> enlightenment-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>>>
>>> ------------------------------------------------------------------------------
>>> All the data continuously generated in your IT infrastructure contains a
>>> definitive record of customers, application performance, security
>>> threats, fraudulent activity and more. Splunk takes this data and makes
>>> sense of it. Business sense. IT sense. Common sense.
>>> http://p.sf.net/sfu/splunk-d2dcopy1
>>> _______________________________________________
>>> enlightenment-devel mailing list
>>> enlightenment-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> All the data continuously generated in your IT infrastructure contains a
>> definitive record of customers, application performance, security
>> threats, fraudulent activity and more. Splunk takes this data and makes
>> sense of it. Business sense. IT sense. Common sense.
>> http://p.sf.net/sfu/splunk-d2dcopy1
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>>
>
>
>


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to