[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] SDL Engine

On Thu, 10 Aug 2006 18:46:27 +0200 Cedric BAIL <cedric.bail@free.fr> babbled:

> Hi,
> 	I started a SDL engine for evas and would like some feedback. First
> it's working and you will see something with evas_sdl_test. But I have
> already a few questions.

ok- since you are using sdl native everything - you want to look at the xrender
(and possibly gl) engines. these basically will be examples of exactly what you
want to do in punting stuff off to the engines with surfaces, caches, etc.
etc. :)

> 	I wanted to directly manipulate SDL_Surface inside RGBA_Image, but
> this means that for the destruction, I need to call SDL_FreeSurface or I
> didn't find a way to do that using the evas_common API. To handle this case,

see above :)

> I implemented my own cache mechanism and copy/pasted all functions destroying
> some RGBA_Image. Well that is working, but that's definitely not clean. So I 
> extract the cache mechanism and make it an evas API (separate patch in 
> evas-data-cache.diff). But this didn't change the problem with evas_common 
> function, like module loaders and others need to be copied. I really don't 
> know how to handle this case correctly. Perhaps adding some callbacks for 
> freeing and creating new image to evas_common_image_init() could be a 
> solution to this duplication of code. Did you prefer a separate cache API, or 
> should I put it back in the SDL engine ?
> 	Right now SDL cache is only handling one RGBA_Image with the same 
> key/filename at a time. This means that if one RGBA_Image is dirty but still 
> referenced, the new one will not be able to evict it. I could fix this by 
> storing a list of RGBA_Image per key/filename, but right now the 
> evas_sdl_test seems to be correct. Did I need to take care of this kind of 
> issue or is it ok this way ?
> 	In the same idea, what are the purpose of engine_image_border_set, 
> engine_image_border_get and engine_image_format_get ? They seem empty in all 
> engine I am looking in.

the xrender engine uses border_set. the format_get really isnt used - so
returning NULL is fine here for now.

> 	Now if you tried the test program and hide the SDL output, you will
> notice that the part that didn't change stays black. To solve this, I need to
> handle SDL_ExposeEvent, but I don't really know where. As I understood most
> events are handle in ecore. But X11 backend for example, seems to be aware of
> this kind of issue. Did I need to check for SDL pending event every time 
> evas_engine_sdl_output_flush is running ? Or did it exist a better way to do 
> that ?

thats just a matter of the test program doing it - look at the x11 ones - they
actually just loop in a tight loop, poll the x event queue for expose events
and add them to damage regions to the evas.

>   Cedric

------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    raster@rasterman.com
Tokyo, Japan (東京 日本)