forked from enlightenment/efl
Compare commits
45 Commits
Author | SHA1 | Date |
---|---|---|
|
698c213823 | |
|
9e7acfc697 | |
|
739322e40a | |
|
478aaaf0d7 | |
|
911df242ab | |
|
22e210e5ae | |
|
a1ea4a417f | |
|
e55a3f1af8 | |
|
2e6e14dd73 | |
|
8f397d559a | |
|
ffdd54df34 | |
|
20edf12595 | |
|
dcde3208fc | |
|
885058bca0 | |
|
11a60bd059 | |
|
76bb86f42c | |
|
7258e0d468 | |
|
e729f21f0f | |
|
2d2ad94bc0 | |
|
342e6fcd53 | |
|
99abdc5ca4 | |
|
a22e1a2b9f | |
|
3521cd1fc2 | |
|
3ab85b3106 | |
|
bb30fb6aea | |
|
7319f3fee3 | |
|
e1bcd5ccae | |
|
f83f490e84 | |
|
ed2402f168 | |
|
fec7492062 | |
|
c1b26bccd4 | |
|
16e098df2d | |
|
02cda8633e | |
|
2d3025e553 | |
|
70d9ed501b | |
|
4e4e42f700 | |
|
7e09afa5c3 | |
|
b58b4f6c3f | |
|
80d5f02276 | |
|
8ba1498361 | |
|
18262f8930 | |
|
141c27b852 | |
|
4ac337c0b1 | |
|
6f980e7350 | |
|
6458b1782e |
50
NEWS
50
NEWS
|
@ -1,7 +1,55 @@
|
|||
==========
|
||||
EFL 1.13.0
|
||||
EFL 1.13.3
|
||||
==========
|
||||
|
||||
Changes since 1.13.2:
|
||||
---------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* eina: eina_unicode_utf8_next_get should return 0 when one of the parameters is NULL to avoid null pointer access. it also corresponds to the description in doc.
|
||||
* eina: Add NULL check for eina_threadqueue_free
|
||||
* Evas GL: reset current surface to NULL when it is destroyed
|
||||
* Evas GL: Add missing dlopen for GLX 1.x version
|
||||
* Evas image: Return proper path even with mmap
|
||||
* evas_object_box: add MAGIC_CHECK when it is added.
|
||||
* Evas object: verify the parent is valid and fail if not.
|
||||
* Evas GL: Fallback to indirect rendering if mul_col != 0xFFFFFFFF
|
||||
* Evas textblock: remove freed item from the line list
|
||||
* ecore_timer: fix the default return value.
|
||||
* evas_text: fix default return value.
|
||||
* Edje embryo: Fix invalid check for get_state_val (text str)
|
||||
* Eina: fix eina_file_split on Windows and update unit test
|
||||
* Evas filters: Fix glReadPixels usage for EGL
|
||||
|
||||
Changes since 1.13.1:
|
||||
---------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* ecore-wl fullscreen state is based on either window type or attribute
|
||||
* ecore/ecore_audio: fix timer control logically wrong.
|
||||
* Evas GL: Fix list of extensions with GLESv1
|
||||
* evas/clip: If the clipper is image or has color, clipped area should be redrawn.
|
||||
* eina: safety check for NULL pointer
|
||||
* evas: prevent crash.
|
||||
* evil: fix access to a file mapping object
|
||||
* ecore_idler: + null check.
|
||||
|
||||
Changes since 1.13.0:
|
||||
---------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* Evas masking: Fix some garbage pixels with the SW engine
|
||||
* Evas masking: Fix potential issues with map & masking
|
||||
* Evas masking: Force BLEND mode in case of image masking (GL)
|
||||
* ecore-drm should not use sscanf when getting logind vt
|
||||
* ecore/drm: Fix libinput >= 0.8 check
|
||||
* ee-win32 probably might compile now
|
||||
* Evas GL: Fix leak of surfaces with GLES 1.1
|
||||
* eina + ecore - fix main loop thread id tracking on fork
|
||||
|
||||
Changes since 1.12.0:
|
||||
---------------------
|
||||
|
||||
|
|
17
configure.ac
17
configure.ac
|
@ -1,4 +1,4 @@
|
|||
EFL_VERSION([1], [13], [0], [release])
|
||||
EFL_VERSION([1], [13], [3], [release])
|
||||
AC_INIT([efl], [efl_version], [enlightenment-devel@lists.sourceforge.net])
|
||||
|
||||
AC_PREREQ([2.60])
|
||||
|
@ -3057,6 +3057,7 @@ AM_CONDITIONAL([HAVE_EEZE_TIZEN], [test "x${want_tizen}" = "xyes"])
|
|||
|
||||
|
||||
#### Ecore_Drm
|
||||
have_libinput_new="no"
|
||||
EFL_LIB_START_OPTIONAL([Ecore_Drm], [test "${want_drm}" = "yes"])
|
||||
|
||||
### Additional options to configure
|
||||
|
@ -3080,6 +3081,20 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_DRM], [eina])
|
|||
EFL_DEPEND_PKG([ECORE_DRM], [DRM], [libdrm >= 2.4 xkbcommon >= 0.3.0 gbm])
|
||||
EFL_DEPEND_PKG([ECORE_DRM], [LIBINPUT], [libinput >= 0.6.0])
|
||||
|
||||
# API change from 0.7 to 0.8. So we define this to support both for now.
|
||||
PKG_CHECK_EXISTS([libinput >= 0.8.0],
|
||||
[have_libinput_new="yes"],
|
||||
[have_libinput_new="no"])
|
||||
AC_MSG_CHECKING([Use new libinput API (newer than 0.8.0)])
|
||||
AC_MSG_RESULT([${have_libinput_new}])
|
||||
if test "x${have_libinput_new}" = "xyes";then
|
||||
AC_DEFINE_UNQUOTED([LIBINPUT_HIGHER_08], [1], [libinput version >= 0.8])
|
||||
fi
|
||||
if test "x${have_libinput_new}" = "xno";then
|
||||
AC_DEFINE_UNQUOTED([LIBINPUT_HIGHER_08], [0], [libinput version >= 0.8])
|
||||
fi
|
||||
|
||||
|
||||
EFL_EVAL_PKGS([ECORE_DRM])
|
||||
|
||||
### Checks for header files
|
||||
|
|
|
@ -386,7 +386,7 @@ check_source_links(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef, Eina_L
|
|||
EINA_LIST_FOREACH(edje_collections, l, pc_source)
|
||||
{
|
||||
/* Find sourced group */
|
||||
if (strcmp(ep->source, pc_source->part) == 0)
|
||||
if (ep->source && pc_source->part && strcmp(ep->source, pc_source->part) == 0)
|
||||
{
|
||||
/* Go through every part to find parts with type GROUP */
|
||||
for (i = 0; i < pc_source->parts_count; ++i)
|
||||
|
@ -418,16 +418,9 @@ static void
|
|||
check_packed_items(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef)
|
||||
{
|
||||
unsigned int i;
|
||||
char *def_name;
|
||||
|
||||
for (i = 0; i < ep->items_count; ++i)
|
||||
{
|
||||
if (!ep->items[i]->name)
|
||||
{
|
||||
def_name = alloca(strlen("item_") + strlen("0xFFFFFFFFFFFFFFFF") + 1);
|
||||
sprintf(def_name, "item_%p", def_name);
|
||||
ep->items[i]->name = strdup(def_name);
|
||||
}
|
||||
if (ep->items[i]->type == EDJE_PART_TYPE_GROUP && !ep->items[i]->source)
|
||||
error_and_abort(ef, "Collection %i: missing source on packed item "
|
||||
"of type GROUP in part \"%s\"",
|
||||
|
|
|
@ -486,6 +486,7 @@ ecore_fork_reset(void)
|
|||
Eina_List *l, *ln;
|
||||
Ecore_Fork_Cb *fcb;
|
||||
|
||||
eina_main_loop_define();
|
||||
eina_lock_take(&_thread_safety);
|
||||
|
||||
ecore_pipe_del(_thread_call);
|
||||
|
|
|
@ -87,6 +87,7 @@ static void *
|
|||
_ecore_idler_del(Ecore_Idler *obj)
|
||||
{
|
||||
Ecore_Idler_Data *idler = eo_data_scope_get(obj, MY_CLASS);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(idler, NULL);
|
||||
EINA_SAFETY_ON_TRUE_RETURN_VAL(idler->delete_me, NULL);
|
||||
idler->delete_me = 1;
|
||||
idlers_delete_me = 1;
|
||||
|
|
|
@ -19,7 +19,7 @@ class Ecore.Timer (Eo.Base)
|
|||
/*@ Get the interval the timer ticks on. */
|
||||
}
|
||||
values {
|
||||
double in; /*@ The new interval in seconds */
|
||||
double in(-1); /*@ The new interval in seconds */
|
||||
}
|
||||
}
|
||||
pending {
|
||||
|
|
|
@ -129,7 +129,7 @@ _ecore_time_wrapper(void *data)
|
|||
pa_time_event *event = (pa_time_event *)data;
|
||||
|
||||
event->callback(event->mainloop, event, &event->tv, event->userdata);
|
||||
|
||||
event->timer = NULL;
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
|
@ -182,7 +182,7 @@ _ecore_pa_time_restart(pa_time_event *event, const struct timeval *tv)
|
|||
}
|
||||
|
||||
interval = (tv->tv_sec - now.tv_sec) + (tv->tv_usec - now.tv_usec) / 1000;
|
||||
if (event->timer)
|
||||
if (!event->timer)
|
||||
{
|
||||
event->timer = ecore_timer_add(interval, _ecore_time_wrapper, event);
|
||||
}
|
||||
|
|
|
@ -503,7 +503,6 @@ _device_handle_axis(struct libinput_device *device, struct libinput_event_pointe
|
|||
|
||||
if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Wheel)))) return;
|
||||
|
||||
axis = libinput_event_pointer_get_axis(event);
|
||||
timestamp = libinput_event_pointer_get_time(event);
|
||||
|
||||
ev->window = (Ecore_Window)input->dev->window;
|
||||
|
@ -522,8 +521,22 @@ _device_handle_axis(struct libinput_device *device, struct libinput_event_pointe
|
|||
ev->root.x = ev->x;
|
||||
ev->root.y = ev->y;
|
||||
|
||||
#if LIBINPUT_HIGHER_08
|
||||
axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL;
|
||||
if (libinput_event_pointer_has_axis(event, axis))
|
||||
ev->z = libinput_event_pointer_get_axis_value(event, axis);
|
||||
|
||||
axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL;
|
||||
if (libinput_event_pointer_has_axis(event, axis))
|
||||
{
|
||||
ev->direction = 1;
|
||||
ev->z = libinput_event_pointer_get_axis_value(event, axis);
|
||||
}
|
||||
#else
|
||||
axis = libinput_event_pointer_get_axis(event);
|
||||
if (axis == LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL) ev->direction = 1;
|
||||
ev->z = libinput_event_pointer_get_axis_value(event);
|
||||
#endif
|
||||
|
||||
ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, ev, NULL, NULL);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "ecore_drm_private.h"
|
||||
#include <ctype.h>
|
||||
|
||||
#ifndef KDSKBMUTE
|
||||
# define KDSKBMUTE 0x4B51
|
||||
|
@ -11,7 +12,7 @@ static inline Eina_Bool
|
|||
_ecore_drm_logind_vt_get(Ecore_Drm_Device *dev)
|
||||
{
|
||||
int ret;
|
||||
char *tty;
|
||||
char *tty, *p;
|
||||
|
||||
ret = sd_session_get_tty(dev->session, &tty);
|
||||
if (ret < 0)
|
||||
|
@ -20,12 +21,18 @@ _ecore_drm_logind_vt_get(Ecore_Drm_Device *dev)
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
ret = sscanf(tty, "tty%u", &dev->vt);
|
||||
p = strchr(tty, 't');
|
||||
dev->vt = UINT_MAX;
|
||||
if (p)
|
||||
{
|
||||
while (p[0] && (!isdigit(p[0])))
|
||||
p++;
|
||||
if (p[0])
|
||||
dev->vt = strtoul(p, NULL, 10);
|
||||
}
|
||||
free(tty);
|
||||
|
||||
if (ret != 1) return EINA_FALSE;
|
||||
|
||||
return EINA_TRUE;
|
||||
return dev->vt != UINT_MAX;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -558,10 +558,7 @@ ecore_wl_window_fullscreen_get(Ecore_Wl_Window *win)
|
|||
|
||||
if (!win) return EINA_FALSE;
|
||||
|
||||
if (win->type == ECORE_WL_WINDOW_TYPE_FULLSCREEN)
|
||||
return EINA_TRUE;
|
||||
|
||||
return EINA_FALSE;
|
||||
return win->fullscreen || (win->type == ECORE_WL_WINDOW_TYPE_FULLSCREEN);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -1957,7 +1957,7 @@ ecore_x_window_key_grab(Ecore_X_Window win,
|
|||
|
||||
for (i = 0; i < 8; i++)
|
||||
xcb_grab_key(_ecore_xcb_conn, 0, win, m | locks[i],
|
||||
keycode, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC);
|
||||
keycode, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
|
||||
_ecore_xcb_key_grabs_num++;
|
||||
t = realloc(_ecore_xcb_key_grabs,
|
||||
_ecore_xcb_key_grabs_num * sizeof(Ecore_X_Window));
|
||||
|
|
|
@ -1892,7 +1892,7 @@ _ecore_x_window_key_grab_internal(Ecore_X_Window win,
|
|||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
XGrabKey(_ecore_x_disp, keycode, m | locks[i],
|
||||
win, False, GrabModeSync, GrabModeAsync);
|
||||
win, False, GrabModeAsync, GrabModeAsync);
|
||||
if (_ecore_xlib_sync) ecore_x_sync();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2784,8 +2784,8 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
{
|
||||
Edje_Part_Description_Text *text;
|
||||
|
||||
if (rp->part->type == EDJE_PART_TYPE_TEXT
|
||||
|| rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)
|
||||
if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
|
||||
(rp->part->type != EDJE_PART_TYPE_TEXTBLOCK))
|
||||
return 0;
|
||||
|
||||
CHKPARAM(4);
|
||||
|
|
|
@ -1240,6 +1240,7 @@ EOLIAN Eina_Bool
|
|||
_edje_object_part_text_set(Eo *obj, Edje *ed, const char *part, const char *text)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
Eina_Bool int_ret;
|
||||
|
||||
if ((!ed) || (!part)) return EINA_FALSE;
|
||||
rp = _edje_real_part_recursive_get(&ed, part);
|
||||
|
@ -1251,8 +1252,9 @@ _edje_object_part_text_set(Eo *obj, Edje *ed, const char *part, const char *text
|
|||
{
|
||||
return EINA_TRUE;
|
||||
}
|
||||
int_ret = _edje_object_part_text_raw_set(ed, obj, rp, part, text);
|
||||
_edje_user_define_string(ed, part, rp->typedata.text->text);
|
||||
return _edje_object_part_text_raw_set(ed, obj, rp, part, text);
|
||||
return int_ret;
|
||||
}
|
||||
|
||||
EOLIAN const char*
|
||||
|
|
|
@ -333,12 +333,14 @@ _eina_file_map_populate(char *map, unsigned int size, Eina_Bool hugetlb)
|
|||
unsigned int i;
|
||||
unsigned int s;
|
||||
|
||||
if (size == 0) return 0;
|
||||
|
||||
s = hugetlb ? EINA_HUGE_PAGE : EINA_SMALL_PAGE;
|
||||
|
||||
for (i = 0; i < size; i += s)
|
||||
r ^= map[i];
|
||||
|
||||
r ^= map[size];
|
||||
r ^= map[size - 1];
|
||||
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -370,6 +370,8 @@ eina_file_virtualize(const char *virtual_name, const void *data, unsigned long l
|
|||
const char *tmpname = "/dev/mem/virtual\\/%16x";
|
||||
int slen;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(data, NULL);
|
||||
|
||||
// Generate an almost uniq filename based on current nsec time.
|
||||
if (_eina_time_get(&tp)) return NULL;
|
||||
ti = _eina_time_convert(&tp);
|
||||
|
|
|
@ -387,6 +387,16 @@ _eina_file_map_close(Eina_File_Map *map)
|
|||
free(map);
|
||||
}
|
||||
|
||||
static char *
|
||||
_eina_file_sep_find(char *s)
|
||||
{
|
||||
for (; *s != '\0'; ++s)
|
||||
if ((*s == '\\') || (*s == '/'))
|
||||
return s;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @endcond
|
||||
*/
|
||||
|
@ -521,28 +531,17 @@ eina_file_split(char *path)
|
|||
if (!ea)
|
||||
return NULL;
|
||||
|
||||
current = path;
|
||||
while (*current)
|
||||
for (current = _eina_file_sep_find(path);
|
||||
current;
|
||||
path = current + 1, current = _eina_file_sep_find(path))
|
||||
{
|
||||
if ((*current == '\\') || (*current == '/'))
|
||||
{
|
||||
if (((*current == '\\') && (current[1] == '\\')) ||
|
||||
((*current == '/') && (current[1] == '/')))
|
||||
{
|
||||
*current = '\0';
|
||||
goto next_char;
|
||||
}
|
||||
length = current - path;
|
||||
|
||||
length = current - path;
|
||||
if (length <= 0)
|
||||
goto next_char;
|
||||
if (length <= 0)
|
||||
continue;
|
||||
|
||||
eina_array_push(ea, path);
|
||||
*current = '\0';
|
||||
path = current + 1;
|
||||
}
|
||||
next_char:
|
||||
current++;
|
||||
eina_array_push(ea, path);
|
||||
*current = '\0';
|
||||
}
|
||||
|
||||
if (*path != '\0')
|
||||
|
|
|
@ -35,6 +35,8 @@ eina_unicode_utf8_next_get(const char *buf, int *iindex)
|
|||
Eina_Unicode r;
|
||||
unsigned char d;
|
||||
|
||||
if (!buf || !iindex) return 0;
|
||||
|
||||
ind = *iindex;
|
||||
|
||||
/* if this char is the null terminator, exit */
|
||||
|
|
|
@ -108,7 +108,6 @@ EAPI DWORD _eina_main_loop;
|
|||
# else
|
||||
EAPI pthread_t _eina_main_loop;
|
||||
# endif
|
||||
static pid_t _eina_pid;
|
||||
#endif
|
||||
|
||||
#ifdef MT
|
||||
|
@ -285,7 +284,6 @@ eina_init(void)
|
|||
# else
|
||||
_eina_main_loop = pthread_self();
|
||||
# endif
|
||||
_eina_pid = getpid();
|
||||
#endif
|
||||
|
||||
#ifdef EINA_HAVE_DEBUG_THREADS
|
||||
|
@ -425,35 +423,9 @@ EAPI Eina_Bool
|
|||
eina_main_loop_is(void)
|
||||
{
|
||||
#ifdef EFL_HAVE_THREADS
|
||||
pid_t pid;
|
||||
|
||||
# ifdef _WIN32
|
||||
if (_eina_main_loop == GetCurrentThreadId())
|
||||
if (pthread_equal(_eina_main_loop, pthread_self()))
|
||||
return EINA_TRUE;
|
||||
# else
|
||||
if (pthread_equal(_eina_main_loop, pthread_self()))
|
||||
return EINA_TRUE;
|
||||
# endif
|
||||
|
||||
pid = getpid();
|
||||
# ifdef _WIN32
|
||||
if (pid != _eina_pid)
|
||||
{
|
||||
_eina_pid = pid;
|
||||
_eina_main_loop = GetCurrentThreadId();
|
||||
return EINA_TRUE;
|
||||
}
|
||||
#else
|
||||
if (pid != _eina_pid)
|
||||
{
|
||||
/* This is in case of a fork, but don't like the solution */
|
||||
_eina_pid = pid;
|
||||
_eina_main_loop = pthread_self();
|
||||
return EINA_TRUE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
|
@ -462,7 +434,6 @@ EAPI void
|
|||
eina_main_loop_define(void)
|
||||
{
|
||||
#ifdef EFL_HAVE_THREADS
|
||||
_eina_pid = getpid();
|
||||
# ifdef _WIN32
|
||||
_eina_main_loop = GetCurrentThreadId();
|
||||
# else
|
||||
|
|
|
@ -365,6 +365,8 @@ eina_thread_queue_new(void)
|
|||
EAPI void
|
||||
eina_thread_queue_free(Eina_Thread_Queue *thq)
|
||||
{
|
||||
if (!thq) return;
|
||||
|
||||
#ifndef ATOMIC
|
||||
eina_spinlock_free(&(thq->lock_pending));
|
||||
#endif
|
||||
|
|
|
@ -289,8 +289,13 @@ _evas_object_clip_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *
|
|||
EINA_COW_STATE_WRITE_END(obj->cur->clipper, state_write, cur);
|
||||
/* i know this was to handle a case where a clip stops having children and
|
||||
* becomes a solid colored box - no one ever does that... they hide the clip
|
||||
* so dont add damages
|
||||
if ((obj->cur->clipper->cur) && (obj->cur->clipper->cur->visible))
|
||||
* so dont add damages.
|
||||
* But, if the clipper could affect color to its clipees,
|
||||
* the clipped area should be redrawn. */
|
||||
if (((obj->cur->clipper->cur) && (obj->cur->clipper->cur->visible)) &&
|
||||
(((obj->cur->clipper->cur->color.r != 255) || (obj->cur->clipper->cur->color.g != 255) ||
|
||||
(obj->cur->clipper->cur->color.b != 255) || (obj->cur->clipper->cur->color.a != 255)) ||
|
||||
(obj->cur->clipper->mask->is_mask)))
|
||||
{
|
||||
if (obj->cur->clipper->layer)
|
||||
{
|
||||
|
@ -302,7 +307,7 @@ _evas_object_clip_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *
|
|||
obj->cur->clipper->cur->geometry.h);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
_evas_object_clip_mask_unset(obj->cur->clipper);
|
||||
}
|
||||
evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
|
||||
|
@ -411,8 +416,13 @@ _evas_object_clip_unset(Eo *eo_obj, Evas_Object_Protected_Data *obj)
|
|||
EINA_COW_STATE_WRITE_END(obj->cur->clipper, state_write, cur);
|
||||
/* i know this was to handle a case where a clip stops having children and
|
||||
* becomes a solid colored box - no one ever does that... they hide the clip
|
||||
* so dont add damages
|
||||
if ((obj->cur->clipper->cur) && (obj->cur->clipper->cur->visible))
|
||||
* so dont add damages.
|
||||
* But, if the clipper could affect color to its clipees,
|
||||
* the clipped area should be redrawn. */
|
||||
if (((obj->cur->clipper->cur) && (obj->cur->clipper->cur->visible)) &&
|
||||
(((obj->cur->clipper->cur->color.r != 255) || (obj->cur->clipper->cur->color.g != 255) ||
|
||||
(obj->cur->clipper->cur->color.b != 255) || (obj->cur->clipper->cur->color.a != 255)) ||
|
||||
(obj->cur->clipper->mask->is_mask)))
|
||||
{
|
||||
if (obj->cur->clipper->layer)
|
||||
{
|
||||
|
@ -424,7 +434,7 @@ _evas_object_clip_unset(Eo *eo_obj, Evas_Object_Protected_Data *obj)
|
|||
obj->cur->clipper->cur->geometry.h);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
_evas_object_clip_mask_unset(obj->cur->clipper);
|
||||
}
|
||||
evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
|
||||
|
|
|
@ -455,6 +455,9 @@ _evas_box_evas_object_smart_calculate(Eo *o, Evas_Object_Box_Data *priv)
|
|||
EAPI Evas_Object *
|
||||
evas_object_box_add(Evas *evas)
|
||||
{
|
||||
MAGIC_CHECK(evas, Evas, MAGIC_EVAS);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
Evas_Object *obj = eo_add(MY_CLASS, evas);
|
||||
return obj;
|
||||
}
|
||||
|
|
|
@ -598,7 +598,13 @@ _evas_image_efl_file_file_set(Eo *eo_obj, Evas_Image_Data *o, const char *file,
|
|||
EOLIAN static void
|
||||
_evas_image_efl_file_file_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, const char **file, const char **key)
|
||||
{
|
||||
if (file) *file = o->cur->u.file;
|
||||
if (file)
|
||||
{
|
||||
if (o->cur->mmaped_source)
|
||||
*file = eina_file_filename_get(o->cur->u.f);
|
||||
else
|
||||
*file = o->cur->u.file;
|
||||
}
|
||||
if (key) *key = o->cur->key;
|
||||
}
|
||||
|
||||
|
@ -2777,6 +2783,10 @@ evas_process_dirty_pixels(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
|
|||
(obj->cur->color.g == 255) &&
|
||||
(obj->cur->color.b == 255) &&
|
||||
(obj->cur->color.a == 255) &&
|
||||
(obj->cur->cache.clip.r == 255) &&
|
||||
(obj->cur->cache.clip.g == 255) &&
|
||||
(obj->cur->cache.clip.b == 255) &&
|
||||
(obj->cur->cache.clip.a == 255) &&
|
||||
(!obj->map->cur.map))
|
||||
) && (!direct_force_off) )
|
||||
{
|
||||
|
|
|
@ -58,7 +58,7 @@ evas_object_intercept_cleanup(Evas_Object *eo_obj)
|
|||
ret = !!(obj->interceptors->Type.func); \
|
||||
if (ret) \
|
||||
obj->interceptors->Type.func(obj->interceptors->Type.data, eo_obj); \
|
||||
obj->interceptors->Type.intercepted = EINA_FALSE; \
|
||||
if (obj->interceptors) obj->interceptors->Type.intercepted = EINA_FALSE; \
|
||||
return ret; \
|
||||
}
|
||||
|
||||
|
|
|
@ -85,11 +85,15 @@ _init_cow(void)
|
|||
EOLIAN static void
|
||||
_evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
|
||||
{
|
||||
Eo *parent = NULL;
|
||||
|
||||
eo_do_super(eo_obj, MY_CLASS, eo_constructor());
|
||||
eo_do(eo_obj, evas_obj_type_set(MY_CLASS_NAME));
|
||||
eo_manual_free_set(eo_obj, EINA_TRUE);
|
||||
|
||||
if (!obj || !_init_cow())
|
||||
eo_do(eo_obj, parent = eo_parent_get());
|
||||
|
||||
if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE))
|
||||
{
|
||||
eo_error_set(eo_obj);
|
||||
return;
|
||||
|
|
|
@ -842,7 +842,7 @@ _item_free(const Evas_Object *eo_obj, Evas_Object_Textblock_Line *ln, Evas_Objec
|
|||
if (ln)
|
||||
{
|
||||
ln->items = (Evas_Object_Textblock_Item *) eina_inlist_remove(
|
||||
EINA_INLIST_GET(ln->items), EINA_INLIST_GET(ln->items));
|
||||
EINA_INLIST_GET(ln->items), EINA_INLIST_GET(it));
|
||||
}
|
||||
free(it);
|
||||
}
|
||||
|
|
|
@ -320,7 +320,7 @@ class Evas.Text (Evas.Object, Efl.Text, Efl.Text_Properties)
|
|||
methods {
|
||||
last_up_to_pos @const {
|
||||
/*@ Returns the logical position of the last char in the text up to the pos given. this is NOT the position of the last char because of the possibility of RTL in the text. */
|
||||
return: int;
|
||||
return: int(-1);
|
||||
params {
|
||||
@in Evas_Coord x; /*@ in */
|
||||
@in Evas_Coord y; /*@ in */
|
||||
|
|
|
@ -114,7 +114,7 @@ FUNC_NAME(RGBA_Image *src, RGBA_Image *dst,
|
|||
{
|
||||
func = evas_common_gfx_func_composite_pixel_mask_span_get(sa, ssa, da, cw, render_op);
|
||||
if (mul_col != 0xffffffff)
|
||||
func2 = evas_common_gfx_func_composite_pixel_color_span_get(sa, ssa, mul_col, da, cw, render_op);
|
||||
func2 = evas_common_gfx_func_composite_pixel_color_span_get(sa, ssa, mul_col, da, cw, EVAS_RENDER_COPY);
|
||||
}
|
||||
if (sa || anti_alias) src->cache_entry.flags.alpha = EINA_TRUE;
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ FUNC_NAME_DO(RGBA_Image *src, RGBA_Image *dst,
|
|||
{
|
||||
buf = alloca(cw * sizeof(DATA32));
|
||||
if (ms->havea) sa = 1;
|
||||
if (mask_ie)
|
||||
if (!mask_ie)
|
||||
{
|
||||
if (mul_col != 0xffffffff)
|
||||
func = evas_common_gfx_func_composite_pixel_color_span_get(sa, ssa, dc->mul.col, da, cw, dc->render_op);
|
||||
|
@ -196,7 +196,7 @@ FUNC_NAME_DO(RGBA_Image *src, RGBA_Image *dst,
|
|||
{
|
||||
func = evas_common_gfx_func_composite_pixel_mask_span_get(sa, ssa, da, cw, dc->render_op);
|
||||
if (mul_col != 0xffffffff)
|
||||
func2 = evas_common_gfx_func_composite_pixel_color_span_get(sa, ssa, dc->mul.col, da, cw, dc->render_op);
|
||||
func2 = evas_common_gfx_func_composite_pixel_color_span_get(sa, ssa, dc->mul.col, da, cw, EVAS_RENDER_COPY);
|
||||
}
|
||||
if (sa || anti_alias) src->cache_entry.flags.alpha = EINA_TRUE;
|
||||
}
|
||||
|
|
|
@ -479,7 +479,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
|
|||
{
|
||||
func = evas_common_gfx_func_composite_pixel_mask_span_get(src->cache_entry.flags.alpha, src->cache_entry.flags.alpha_sparse, dst->cache_entry.flags.alpha, dst_clip_w, dc->render_op);
|
||||
if (dc->mul.use)
|
||||
func2 = evas_common_gfx_func_composite_pixel_color_span_get(src->cache_entry.flags.alpha, src->cache_entry.flags.alpha_sparse, dc->mul.col, dst->cache_entry.flags.alpha, dst_clip_w, dc->render_op);
|
||||
func2 = evas_common_gfx_func_composite_pixel_color_span_get(src->cache_entry.flags.alpha, src->cache_entry.flags.alpha_sparse, dc->mul.col, dst->cache_entry.flags.alpha, dst_clip_w, EVAS_RENDER_COPY);
|
||||
}
|
||||
|
||||
if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h))
|
||||
|
|
|
@ -103,7 +103,7 @@ mmap(void *addr EVIL_UNUSED,
|
|||
if (protect & (PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_READ))
|
||||
acs = FILE_MAP_EXECUTE;
|
||||
#endif
|
||||
else if ((protect & (PAGE_READWRITE | PAGE_READONLY)) == (PAGE_READWRITE | PAGE_READONLY))
|
||||
else if (protect & (PAGE_READWRITE | PAGE_READONLY))
|
||||
acs = FILE_MAP_READ;
|
||||
else
|
||||
{
|
||||
|
|
|
@ -823,7 +823,7 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
|
|||
}
|
||||
|
||||
static void
|
||||
_ecore_evas_win32_object_cursor_unset(Ecore_Evas *ee)
|
||||
_ecore_evas_win32_cursor_unset(Ecore_Evas *ee)
|
||||
{
|
||||
evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
|
|
|
@ -1640,11 +1640,6 @@ _ecore_evas_x_event_window_show(void *data EINA_UNUSED, int type EINA_UNUSED, vo
|
|||
}
|
||||
if ((first_map_bug) && (!strcmp(ee->driver, "opengl_x11")))
|
||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
||||
if (ee->prop.override)
|
||||
{
|
||||
ee->prop.withdrawn = EINA_FALSE;
|
||||
if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
|
||||
}
|
||||
if (ee->visible) return ECORE_CALLBACK_PASS_ON;
|
||||
// if (ee->visible) return ECORE_CALLBACK_DONE;
|
||||
// printf("SHOW EVENT %p\n", ee);
|
||||
|
@ -2863,6 +2858,12 @@ _ecore_evas_x_show(Ecore_Evas *ee)
|
|||
ecore_x_window_show(ee->prop.window);
|
||||
if (ee->prop.fullscreen)
|
||||
ecore_x_window_focus(ee->prop.window);
|
||||
if (ee->prop.withdrawn)
|
||||
{
|
||||
ee->prop.withdrawn = EINA_FALSE;
|
||||
if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
|
||||
_ecore_evas_x_hints_update(ee);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -28,11 +28,14 @@ typedef _getproc_fn (*fp_getproc)(const char *);
|
|||
#define _EVASGL_EXT_BEGIN(name)
|
||||
#define _EVASGL_EXT_END()
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) \
|
||||
ret (*gl_ext_sym_##name) param = NULL; \
|
||||
ret (*gles1_ext_sym_##name) param = NULL;
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
|
||||
|
||||
|
@ -43,9 +46,12 @@ typedef _getproc_fn (*fp_getproc)(const char *);
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -60,9 +66,14 @@ typedef _getproc_fn (*fp_getproc)(const char *);
|
|||
int _gles1_ext_support_##name = 0;
|
||||
#define _EVASGL_EXT_END()
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
|
||||
int _gl_ext_support_func_##name = 0; \
|
||||
int _gles1_ext_support_func_##name = 0;
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
|
||||
|
||||
|
@ -73,9 +84,12 @@ typedef _getproc_fn (*fp_getproc)(const char *);
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -349,17 +363,24 @@ re->info->info.screen);
|
|||
#define _EVASGL_EXT_DRVNAME(name) \
|
||||
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) *ext_support = 1;
|
||||
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
|
||||
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) { *ext_support = 1; _gl_ext_support_func_##name = 1; }
|
||||
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname) \
|
||||
if (_EVASGL_EXT_CHECK_SUPPORT(deskname)) *ext_support = 1;
|
||||
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) \
|
||||
{ \
|
||||
ret (**drvfunc)param = &gl_ext_sym_##name;
|
||||
ret (**drvfunc)param = &gl_ext_sym_##name; \
|
||||
if (*ext_support == 1) \
|
||||
{
|
||||
|
||||
#define _EVASGL_EXT_FUNCTION_END() \
|
||||
} \
|
||||
if ((*drvfunc) == NULL) _EVASGL_EXT_DISCARD_SUPPORT(); \
|
||||
}
|
||||
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name) \
|
||||
if ((*drvfunc) == NULL) *drvfunc = name;
|
||||
|
||||
|
@ -386,13 +407,20 @@ re->info->info.screen);
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
|
||||
#undef GETPROCADDR
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
_gl_ext_string[0] = 0x00; //NULL;
|
||||
_gl_ext_string_official[0] = 0x00;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Extension HEADER
|
||||
|
@ -408,15 +436,23 @@ re->info->info.screen);
|
|||
#define _EVASGL_EXT_END()
|
||||
#define _EVASGL_EXT_CHECK_SUPPORT(name)
|
||||
#define _EVASGL_EXT_DISCARD_SUPPORT()
|
||||
#define _EVASGL_EXT_DRVNAME_PRINT(name) \
|
||||
{ \
|
||||
strncat(_gl_ext_string, name" ", MAX_EXTENSION_STRING_BUFFER); \
|
||||
if ((strncmp(name, "GL", 2) == 0) && (strstr(_gl_ext_string_official, name) == NULL)) \
|
||||
strncat(_gl_ext_string_official, name" ", MAX_EXTENSION_STRING_BUFFER); \
|
||||
}
|
||||
#define _EVASGL_EXT_DRVNAME(name) \
|
||||
if (_curext_supported) \
|
||||
{ \
|
||||
strncat(_gl_ext_string, #name" ", MAX_EXTENSION_STRING_BUFFER); \
|
||||
strncat(_gl_ext_string_official, #name" ", MAX_EXTENSION_STRING_BUFFER); \
|
||||
}
|
||||
if (_curext_supported) \
|
||||
_EVASGL_EXT_DRVNAME_PRINT(#name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
|
||||
if (_curext_supported && _gl_ext_support_func_##name) \
|
||||
_EVASGL_EXT_DRVNAME_PRINT(#name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
|
||||
|
||||
|
@ -426,10 +462,14 @@ re->info->info.screen);
|
|||
#undef _EVASGL_EXT_DISCARD_SUPPORT
|
||||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME_PRINT
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -463,10 +503,13 @@ evgl_api_ext_get(Evas_GL_API *gl_funcs)
|
|||
#define _EVASGL_EXT_END() \
|
||||
}
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) \
|
||||
ORD(name);
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
|
@ -483,9 +526,12 @@ evgl_api_ext_get(Evas_GL_API *gl_funcs)
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_PRIVATE_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
|
@ -504,7 +550,7 @@ _evgl_api_gles1_ext_init(void)
|
|||
#ifdef GL_GLES
|
||||
int _curext_supported = 0;
|
||||
Evas_GL_API *gles1_funcs;
|
||||
const char *gles1_exts;
|
||||
const char *gles1_exts, *eglexts;
|
||||
EVGL_Resource *rsc;
|
||||
EGLint context_version;
|
||||
EGLDisplay dpy = EGLDISPLAY_GET();
|
||||
|
@ -559,6 +605,13 @@ _evgl_api_gles1_ext_init(void)
|
|||
|
||||
_gles1_ext_string[0] = '\0';
|
||||
|
||||
eglexts = eglQueryString(dpy, EGL_EXTENSIONS);
|
||||
if (!eglexts)
|
||||
{
|
||||
ERR("eglQueryString(EGL_EXTENSIONS) returned NULL!");
|
||||
eglexts = "";
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Scanning supported extensions, sets the variables
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -576,7 +629,7 @@ _evgl_api_gles1_ext_init(void)
|
|||
}
|
||||
|
||||
#define _EVASGL_EXT_CHECK_SUPPORT(name) \
|
||||
(strstr(gles1_exts, name) != NULL)
|
||||
((strstr(gles1_exts, name) != NULL) || (strstr(eglexts, name) != NULL))
|
||||
|
||||
#define _EVASGL_EXT_DISCARD_SUPPORT() \
|
||||
*ext_support = 0;
|
||||
|
@ -584,17 +637,26 @@ _evgl_api_gles1_ext_init(void)
|
|||
#define _EVASGL_EXT_DRVNAME(name) \
|
||||
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) *ext_support = 1;
|
||||
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
|
||||
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) { *ext_support = 1; _gles1_ext_support_func_##name = 1; }
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname) \
|
||||
if (_EVASGL_EXT_CHECK_SUPPORT(deskname)) *ext_support = 1;
|
||||
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) \
|
||||
{ \
|
||||
ret (**drvfunc)param = &gles1_ext_sym_##name;
|
||||
ret (**drvfunc)param = &gles1_ext_sym_##name; \
|
||||
if (*ext_support == 1) \
|
||||
{
|
||||
|
||||
#define _EVASGL_EXT_FUNCTION_END() \
|
||||
} \
|
||||
if ((*drvfunc) == NULL) _EVASGL_EXT_DISCARD_SUPPORT(); \
|
||||
}
|
||||
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN() \
|
||||
if (EINA_FALSE) \
|
||||
{
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END() \
|
||||
}
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name) \
|
||||
if ((*drvfunc) == NULL) *drvfunc = name;
|
||||
|
||||
|
@ -623,9 +685,12 @@ _evgl_api_gles1_ext_init(void)
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
#undef GETPROCADDR
|
||||
|
@ -641,10 +706,22 @@ _evgl_api_gles1_ext_init(void)
|
|||
#define _EVASGL_EXT_END()
|
||||
#define _EVASGL_EXT_CHECK_SUPPORT(name)
|
||||
#define _EVASGL_EXT_DISCARD_SUPPORT()
|
||||
#define _EVASGL_EXT_DRVNAME(name) if (_curext_supported) strcat(_gles1_ext_string, #name" ");
|
||||
#define _EVASGL_EXT_DRVNAME_PRINT(name) \
|
||||
{ \
|
||||
if ((strncmp(name, "GL", 2) == 0) && (strstr(_gles1_ext_string, name) == NULL)) \
|
||||
strcat(_gles1_ext_string, name" "); \
|
||||
}
|
||||
#define _EVASGL_EXT_DRVNAME(name) \
|
||||
if (_curext_supported) \
|
||||
_EVASGL_EXT_DRVNAME_PRINT(#name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
|
||||
if (_curext_supported && _gles1_ext_support_func_##name) \
|
||||
_EVASGL_EXT_DRVNAME_PRINT(#name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
|
||||
|
||||
|
@ -654,10 +731,14 @@ _evgl_api_gles1_ext_init(void)
|
|||
#undef _EVASGL_EXT_DISCARD_SUPPORT
|
||||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME_PRINT
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
|
||||
|
@ -705,10 +786,13 @@ evgl_api_gles1_ext_get(Evas_GL_API *gl_funcs)
|
|||
#define _EVASGL_EXT_END() \
|
||||
}
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) \
|
||||
ORD(name);
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
|
@ -724,9 +808,12 @@ evgl_api_gles1_ext_get(Evas_GL_API *gl_funcs)
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_PRIVATE_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
|
|
|
@ -24,9 +24,12 @@
|
|||
#define _EVASGL_EXT_BEGIN(name)
|
||||
#define _EVASGL_EXT_END()
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) extern ret (*gl_ext_sym_##name) param;
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
|
||||
|
||||
|
@ -37,9 +40,12 @@
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -54,9 +60,12 @@
|
|||
#define _EVASGL_EXT_BEGIN(name) extern int _gl_ext_support_##name;
|
||||
#define _EVASGL_EXT_END()
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
|
||||
|
||||
|
@ -67,9 +76,12 @@
|
|||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_DESKTOP
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
|
||||
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
// Driver extensions to wrap (name : SPEC extension name)
|
||||
#define _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
|
||||
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
|
||||
|
||||
// These functions will be exported to 'EVAS extension function'.
|
||||
|
@ -29,6 +30,12 @@
|
|||
// End of the extension function block
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_END()
|
||||
|
||||
// These functions will not be considered for export for GLESv1
|
||||
// Begin of the glesv1 bypass function block
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
// End of the glesv1 bypass function block
|
||||
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
|
||||
// Driver extension functions to wrap (name : SPEC extension function name)
|
||||
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
|
||||
|
||||
|
@ -38,6 +45,11 @@
|
|||
#endif
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) _EVASGL_EXT_DRVNAME(name)
|
||||
#define _EVASGL_EXT_DRVNAME_PRIVATE_DEFINED
|
||||
#endif
|
||||
|
||||
#ifndef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(ret, name, param) _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
|
||||
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN_DEFINED
|
||||
|
@ -295,8 +307,8 @@ _EVASGL_EXT_BEGIN(EXT_multisampled_render_to_texture)
|
|||
_EVASGL_EXT_END()
|
||||
|
||||
_EVASGL_EXT_BEGIN(multisampled_render_to_texture)
|
||||
_EVASGL_EXT_DRVNAME(GL_IMG_multisampled_render_to_texture)
|
||||
_EVASGL_EXT_DRVNAME(GL_EXT_multisampled_render_to_texture)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(GL_IMG_multisampled_render_to_texture)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(GL_EXT_multisampled_render_to_texture)
|
||||
|
||||
_EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(void, glRenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glRenderbufferStorageMultisample")
|
||||
|
@ -1020,14 +1032,16 @@ _EVASGL_EXT_BEGIN(robustness)
|
|||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glReadnPixels")
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glReadnPixelsEXT")
|
||||
_EVASGL_EXT_FUNCTION_END()
|
||||
_EVASGL_EXT_FUNCTION_BEGIN(void, glGetnUniformfvEXT, (GLuint program, GLint location, GLsizei bufSize, float *params))
|
||||
_EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
|
||||
_EVASGL_EXT_FUNCTION_BEGIN(void, glGetnUniformfvEXT, (GLuint program, GLint location, GLsizei bufSize, float *params))
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glGetnUniformfv")
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glGetnUniformfvEXT")
|
||||
_EVASGL_EXT_FUNCTION_END()
|
||||
_EVASGL_EXT_FUNCTION_BEGIN(void, glGetnUniformivEXT, (GLuint program, GLint location, GLsizei bufSize, GLint *params))
|
||||
_EVASGL_EXT_FUNCTION_END()
|
||||
_EVASGL_EXT_FUNCTION_BEGIN(void, glGetnUniformivEXT, (GLuint program, GLint location, GLsizei bufSize, GLint *params))
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glGetnUniformiv")
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glGetnUniformivEXT")
|
||||
_EVASGL_EXT_FUNCTION_END()
|
||||
_EVASGL_EXT_FUNCTION_END()
|
||||
_EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
|
||||
_EVASGL_EXT_END()
|
||||
|
||||
_EVASGL_EXT_BEGIN(sRGB)
|
||||
|
@ -1346,8 +1360,8 @@ _EVASGL_EXT_END()
|
|||
|
||||
// ----------------------------------------------------------
|
||||
_EVASGL_EXT_BEGIN(framebuffer_blit)
|
||||
_EVASGL_EXT_DRVNAME(GL_NV_framebuffer_blit)
|
||||
_EVASGL_EXT_DRVNAME(GL_ANGLE_framebuffer_blit)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(GL_NV_framebuffer_blit)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(GL_ANGLE_framebuffer_blit)
|
||||
|
||||
_EVASGL_EXT_FUNCTION_WHITELIST("glBlitFramebuffer")
|
||||
_EVASGL_EXT_FUNCTION_WHITELIST("glBlitFramebufferNV")
|
||||
|
@ -1540,9 +1554,9 @@ _EVASGL_EXT_END()
|
|||
_EVASGL_EXT_BEGIN(EGL_KHR_fence_sync)
|
||||
|
||||
/* 3 aliasses for EGL_KHR_fence_sync */
|
||||
_EVASGL_EXT_DRVNAME(EGL_KHR_fence_sync)
|
||||
_EVASGL_EXT_DRVNAME(GL_OES_EGL_sync)
|
||||
_EVASGL_EXT_DRVNAME(VG_KHR_EGL_sync)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(EGL_KHR_fence_sync)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(GL_OES_EGL_sync)
|
||||
_EVASGL_EXT_DRVNAME_PRIVATE(VG_KHR_EGL_sync)
|
||||
|
||||
_EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(void *, eglCreateSyncKHR, (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list))
|
||||
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("eglCreateSyncKHR")
|
||||
|
@ -1707,12 +1721,18 @@ _EVASGL_EXT_END()
|
|||
#undef _EVASGL_EXT_FUNCTION_PRIVATE_END_DEFINED
|
||||
#endif
|
||||
|
||||
#ifdef _EVASGL_EXT_DRVNAME_PRIVATE_DEFINED
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE_DEFINED
|
||||
#endif
|
||||
|
||||
#ifdef _EVASGL_EXT_USE_DEFAULT_DEFINE
|
||||
#undef _EVASGL_EXT_CHECK_SUPPORT
|
||||
#undef _EVASGL_EXT_DISCARD_SUPPORT
|
||||
#undef _EVASGL_EXT_BEGIN
|
||||
#undef _EVASGL_EXT_END
|
||||
#undef _EVASGL_EXT_DRVNAME
|
||||
#undef _EVASGL_EXT_DRVNAME_PRIVATE
|
||||
#undef _EVASGL_EXT_FUNCTION_BEGIN
|
||||
#undef _EVASGL_EXT_FUNCTION_END
|
||||
#undef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN
|
||||
|
|
|
@ -3928,11 +3928,22 @@ _evgl_gles1_api_init(void)
|
|||
if (_initialized) return EINA_TRUE;
|
||||
|
||||
memset(&_gles1_api, 0, sizeof(_gles1_api));
|
||||
|
||||
#ifdef GL_GLES
|
||||
_gles1_handle = dlopen("libGLES_CM.so", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGLES_CM.so.1", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGLES_CM.so.1.1", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGLESv1_CM.so", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGLESv1_CM.so.1", RTLD_NOW);
|
||||
#else
|
||||
_gles1_handle = dlopen("libGL.so", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGL.so.4", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGL.so.3", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGL.so.2", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGL.so.1", RTLD_NOW);
|
||||
if (!_gles1_handle) _gles1_handle = dlopen("libGL.so.0", RTLD_NOW);
|
||||
#endif
|
||||
|
||||
if (!_gles1_handle)
|
||||
{
|
||||
WRN("OpenGL ES 1 was not found on this system. Evas GL will not support GLES 1 contexts.");
|
||||
|
|
|
@ -1754,10 +1754,16 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
|
|||
Eina_Bool blend = EINA_FALSE;
|
||||
Evas_GL_Shader shader = SHADER_IMG;
|
||||
GLuint prog = gc->shared->shader[shader].prog;
|
||||
int pn = 0, sam = 0;
|
||||
int pn = 0, sam = 0, render_op = gc->dc->render_op;
|
||||
|
||||
if (!(gc->dc->render_op == EVAS_RENDER_COPY) &&
|
||||
((a < 255) || (tex->alpha) || (!!mtex))) blend = EINA_TRUE;
|
||||
if (!!mtex)
|
||||
{
|
||||
// masking forces BLEND mode (mask with COPY does not make sense)
|
||||
blend = EINA_TRUE;
|
||||
render_op = EVAS_RENDER_BLEND;
|
||||
}
|
||||
else if (!(render_op == EVAS_RENDER_COPY) && ((a < 255) || (tex->alpha)))
|
||||
blend = EINA_TRUE;
|
||||
|
||||
if (tex_only)
|
||||
{
|
||||
|
@ -1941,7 +1947,7 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
|
|||
gc->pipe[pn].shader.cur_prog = prog;
|
||||
gc->pipe[pn].shader.smooth = smooth;
|
||||
gc->pipe[pn].shader.blend = blend;
|
||||
gc->pipe[pn].shader.render_op = gc->dc->render_op;
|
||||
gc->pipe[pn].shader.render_op = render_op;
|
||||
gc->pipe[pn].shader.clip = 0;
|
||||
gc->pipe[pn].shader.cx = 0;
|
||||
gc->pipe[pn].shader.cy = 0;
|
||||
|
|
|
@ -1607,6 +1607,7 @@ evgl_surface_create(void *eng_data, Evas_GL_Config *cfg, int w, int h)
|
|||
{
|
||||
if (!evgl_engine->funcs->gles1_surface_create)
|
||||
{
|
||||
ERR("Can't create GLES 1.1 surfaces");
|
||||
evas_gl_common_error_set(eng_data, EVAS_GL_NOT_INITIALIZED);
|
||||
goto error;
|
||||
}
|
||||
|
@ -1669,6 +1670,8 @@ evgl_surface_create(void *eng_data, Evas_GL_Config *cfg, int w, int h)
|
|||
|
||||
if (dbg) DBG("Created surface sfc %p (eng %p)", sfc, eng_data);
|
||||
|
||||
_surface_context_list_print();
|
||||
|
||||
return sfc;
|
||||
|
||||
error:
|
||||
|
@ -1820,6 +1823,9 @@ evgl_surface_destroy(void *eng_data, EVGL_Surface *sfc)
|
|||
if ((dbg = evgl_engine->api_debug_mode))
|
||||
DBG("Destroying surface sfc %p (eng %p)", sfc, eng_data);
|
||||
|
||||
if (sfc->current_ctx && sfc->current_ctx->current_sfc == sfc)
|
||||
sfc->current_ctx->current_sfc = NULL;
|
||||
|
||||
if ((rsc->current_ctx) && (rsc->current_ctx->current_sfc == sfc) )
|
||||
{
|
||||
if (evgl_engine->api_debug_mode)
|
||||
|
@ -1860,8 +1866,11 @@ evgl_surface_destroy(void *eng_data, EVGL_Surface *sfc)
|
|||
DBG("Destroying special surface used for GLES 1.x rendering");
|
||||
ret = evgl_engine->funcs->gles1_surface_destroy(eng_data, sfc);
|
||||
|
||||
if (!ret) ERR("Engine failed to destroy a GLES1.x Surface.");
|
||||
return ret;
|
||||
if (!ret)
|
||||
{
|
||||
ERR("Engine failed to destroy a GLES1.x Surface.");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1926,6 +1935,8 @@ evgl_surface_destroy(void *eng_data, EVGL_Surface *sfc)
|
|||
free(sfc);
|
||||
sfc = NULL;
|
||||
|
||||
_surface_context_list_print();
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
@ -2197,6 +2208,12 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, EVGL_Context *ctx)
|
|||
ctx->current_sfc = sfc;
|
||||
rsc->current_ctx = ctx;
|
||||
rsc->current_eng = eng_data;
|
||||
|
||||
// Update extensions after GLESv1 context is bound
|
||||
//evgl_api_gles1_ext_get(gles1_funcs);
|
||||
|
||||
_surface_context_list_print();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -763,9 +763,11 @@ evas_gl_common_image_update(Evas_Engine_GL_Context *gc, Evas_GL_Image *im)
|
|||
{
|
||||
Image_Entry *ie;
|
||||
if (!im->im) return;
|
||||
ie = &im->im->cache_entry;
|
||||
evas_gl_common_image_alloc_ensure(im);
|
||||
|
||||
// alloc ensure can change im->im, so only get the local variable later.
|
||||
ie = &im->im->cache_entry;
|
||||
|
||||
/*
|
||||
if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
|
||||
(im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
|
||||
|
|
|
@ -1343,9 +1343,13 @@ eng_gl_surface_read_pixels(void *data, void *surface,
|
|||
*/
|
||||
|
||||
glsym_glBindFramebuffer(GL_FRAMEBUFFER, im->tex->pt->fb);
|
||||
|
||||
#ifndef GL_GLES
|
||||
if (im->tex->pt->format == GL_BGRA)
|
||||
glReadPixels(x, y, w, h, GL_BGRA, GL_UNSIGNED_BYTE, pixels);
|
||||
else
|
||||
#endif
|
||||
|
||||
{
|
||||
DATA32 *ptr = pixels;
|
||||
int k;
|
||||
|
|
|
@ -101,7 +101,7 @@ START_TEST(eina_file_split_simple)
|
|||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
ea = eina_file_split(strdup("\\this\\is\\a\\small\\test"));
|
||||
ea = eina_file_split(strdup("\\this/is\\a/small/test"));
|
||||
#else
|
||||
ea = eina_file_split(strdup("/this/is/a/small/test"));
|
||||
#endif
|
||||
|
@ -119,7 +119,7 @@ START_TEST(eina_file_split_simple)
|
|||
#ifdef _WIN32
|
||||
ea =
|
||||
eina_file_split(strdup(
|
||||
"this\\\\is\\\\\\a \\more\\complex\\\\\\case\\\\\\"));
|
||||
"this\\/\\is\\//\\\\a \\more/\\complex///case\\\\\\"));
|
||||
#else
|
||||
ea = eina_file_split(strdup("this//is///a /more/complex///case///"));
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue