wayland_egl engine caused by windows being hidden:
From: Rob Bradford <rob@linux.intel.com>
Date: Fri, 13 Jul 2012 19:13:12 +0100
Subject: [PATCH] evas(wayland_egl): Resolve a series of segfaults on
clean-up
The first was that when a window was being hidden the render engine
(e->engine.data.output) was being assigned to NULL (like on an error
path). I
checked other backends and they only free and nullify this pointer on
error
paths. By doing it on a hide it was interfering with cleanup process
for the
object.
This then highlighted a second crash from the derefence of the window
to NULL
when flushing the cache. If the window was hidden this window pointer
would
be NULL.
The third it highlighted was a duplicate call into
evas_gl_common_image_free
and the freeing of the image cache twice. By the time eng_image_free
has been
called the cache has already been freed so we can remove the duplicate
free.
SVN revision: 74330
From: Alex Wu <zhiwen.wu@linux.intel.com>
When calling elm_win_alpha_set(), the global EGLContext object keep
unchanged, but the new EGLSurface object subjects to the new EGLConfig
with changed alpha_size. This makes eng_window_new() failed and hence
free the Render_Engine object (e->engine.data.output) and nullize it.
Next time other objects reference the output, segfault occurs.
In this patch, I give every Evas_GL_Wl_Window object a EGLContext object
and all these EGLContext objects share the same shader program objects.
A new global EGLContext object "share_context" added, which is
responsible for keeping the shared objects alive. e.g. shader program
objects.At the first time succeeded to create a EGLContext, assign it to
the "share_context", and should not destory it in eng_window_free.
The "share_context" will be taken as the 3rd argument when calling
eglCreateContext(), and then updated to the new created EGLContext to
keep the shared gl objects available.
Thanks for devilhorns' review and suggestion.
SVN revision: 74328
The arguments for image_map_draw changed, and these engines were receiving
the wrong data. In the case of gl_cocoa and gl_sdl, the gl_common would
receive a pointer for 'npoints' and would call abort() because npoints
is not 4.
SVN revision: 74321
NOTE: That one is nasty and I do admit that this doesn't
sounds like the proper fix, but as it doesn't trigger other
issue and is simple/reasonable I took to defeat that damn
beast.
SVN revision: 74180
evas_object_image_file_set tries to load the file even if the file is NULL,
this in turn makes proxies always report about an error, although there
isn't really one.
I'm not sure whether evas_object_image_file_set should behave the way it
does, but I'm sure the proxy needs to reset the error anyway (because of
potential previous errors).
SVN revision: 74073
The flag and pixel data will be set on this callback, avoiding new
image_load_data() to create a new request or wait for the LOADED
message.
SVN revision: 73999
A lot going on here:
- Request callbacks were adapted to fit the new scheme
- The old requests systems in the cache was wiped out
- Old slave handling in evas_cserve2_main.c is dead too
- PRELOAD commands are responded with LOADED now
SVN revision: 73984
Message creation was like that already, but now we call the response or
error callback for the request only once. The cache does what it needs
there and returns, in the case of a successful response, the message
that will be sent to the client.
SVN revision: 73981
We don't use this cache with cserve2, so it makes no sense to keep async
preload disabled. When not using the cserve2, even if built with that
option, it will support preload with no side effects.
SVN revision: 73422