forked from enlightenment/efl
Merge branch 'master' into devs/hermet/lottie
This commit is contained in:
commit
b932fe8430
|
@ -666,7 +666,8 @@ EXCLUDE_PATTERNS = *_private* \
|
|||
*/efl_*.eo.c \
|
||||
*/efl_*.eo.h \
|
||||
*/efl_*.eot.h \
|
||||
*/Efl_*
|
||||
*/Efl_* \
|
||||
*/Eo.h
|
||||
|
||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||
|
|
|
@ -120,11 +120,11 @@
|
|||
*
|
||||
* @section create_class_h_side How to create a class - H side?
|
||||
* - If the object is new, establish the public APIs
|
||||
* - #define \$(CLASS_NAME) \$(class_name)_class_get(): will be used to access data/inherit from this class...
|
||||
* - \#define \$(CLASS_NAME) \$(class_name)_class_get(): will be used to access data/inherit from this class...
|
||||
* - const Eo_Class *\$(class_name)_class_get(void) EINA_CONST: declaration of the function that will create the class (not the instance), i.e virtual table...
|
||||
* - extern EAPI Eo_Op \$(CLASS_NAME)_BASE_ID: class id that will be essentially used to identify functions set of this class
|
||||
* - enum of the function ids of the class in the form \$(CLASS_NAME)_SUB_ID: used to identify the function inside the class; function id is unique per class but (class id, function id) is unique per system..
|
||||
* - #define \$(CLASS_NAME)_ID(sub_id) (\$(CLASS_NAME)_BASE_ID + sub_id): formula to calculate the system function id
|
||||
* - \#define \$(CLASS_NAME)_ID(sub_id) (\$(CLASS_NAME)_BASE_ID + sub_id): formula to calculate the system function id
|
||||
* - define of each function consists of:
|
||||
* - the name of the function that will be used in eo_do
|
||||
* - parameters without types
|
||||
|
|
|
@ -331,7 +331,7 @@ subprojects = [
|
|||
['ethumb' ,[] , true, true, true, false, false, false, ['eina', 'efl', 'eo'], []],
|
||||
['ethumb_client' ,[] , false, true, true, false, false, true, ['eina', 'efl', 'eo', 'ethumb'], []],
|
||||
['elementary' ,[] , true, true, true, true, true, true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio'], ['atspi']],
|
||||
['efl_wl' ,['wl'] , false, true, true, false, false, false, ['evas', 'ecore'], []],
|
||||
['efl_canvas_wl' ,['wl'] , false, true, true, false, false, false, ['eina', 'efl', 'eo', 'evas', 'ecore'], []],
|
||||
['elua' ,['elua'] , false, true, true, false, true, false, ['eina', 'luajit'], []],
|
||||
['ecore_wayland' ,['wl-deprecated'] , false, true, false, false, false, false, ['eina'], []],
|
||||
['ecore_drm' ,['drm-deprecated'] , false, true, false, false, false, false, ['eina'], []],
|
||||
|
|
|
@ -4562,7 +4562,7 @@ st_collections_group_name(void)
|
|||
This property can be inherited.
|
||||
Defaults: 0
|
||||
|
||||
@warning Your edc file should always wrap this keyword with #ifdef HAVE_SKIP_NAMESPACE_VALIDATION
|
||||
@warning Your edc file should always wrap this keyword with <tt>\#ifdef HAVE_SKIP_NAMESPACE_VALIDATION</tt>
|
||||
@since 1.21
|
||||
@endproperty
|
||||
*/
|
||||
|
|
|
@ -744,7 +744,8 @@ check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef)
|
|||
|
||||
if (et->id >= (int) pc->parts_count)
|
||||
{
|
||||
ERR("Target id '%d' greater than possible index '%d'.", et->id, (int) pc->parts_count - 1);
|
||||
ERR("In group '%s' program '%s', target id '%d' greater than possible index '%d'.",
|
||||
pc->part ? pc->part : "", ep->name ? ep->name : "", et->id, (int) pc->parts_count - 1);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#define EDJE_1_21_SUPPORTED " -DEFL_VERSION_1_21=1 "
|
||||
#define EDJE_1_22_SUPPORTED " -DEFL_VERSION_1_22=1 "
|
||||
#define EDJE_1_23_SUPPORTED " -DEFL_VERSION_1_23=1 "
|
||||
#define EDJE_1_24_SUPPORTED " -DEFL_VERSION_1_24=1 "
|
||||
|
||||
#define EDJE_CC_EFL_VERSION_SUPPORTED \
|
||||
EDJE_1_18_SUPPORTED \
|
||||
|
@ -37,7 +38,8 @@
|
|||
EDJE_1_20_SUPPORTED \
|
||||
EDJE_1_21_SUPPORTED \
|
||||
EDJE_1_22_SUPPORTED \
|
||||
EDJE_1_23_SUPPORTED
|
||||
EDJE_1_23_SUPPORTED \
|
||||
EDJE_1_24_SUPPORTED
|
||||
|
||||
static void new_object(void);
|
||||
static void new_statement(void);
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
#include "Efl_Wl.h"
|
||||
#include "Efl_Canvas_Wl.h"
|
||||
#include "Elementary.h"
|
||||
|
||||
static Evas_Object *win;
|
||||
static Eina_Strbuf *buf;
|
||||
static Ecore_Exe *exe;
|
||||
static Eo *exe;
|
||||
|
||||
static Eina_Bool
|
||||
del_handler(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Exe_Event_Del *ev)
|
||||
static void
|
||||
del_handler(void *d EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
if (ev->exe == exe) ecore_main_loop_quit();
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
if (ev->object == exe) ecore_main_loop_quit();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -24,8 +23,8 @@ focus_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev
|
|||
static Eina_Bool
|
||||
dostuff(void *data)
|
||||
{
|
||||
exe = efl_wl_run(data, eina_strbuf_string_get(buf));
|
||||
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, (Ecore_Event_Handler_Cb)del_handler, NULL);
|
||||
exe = efl_canvas_wl_run(data, eina_strbuf_string_get(buf));
|
||||
efl_event_callback_add(exe, EFL_TASK_EVENT_EXIT, del_handler, NULL);
|
||||
evas_object_focus_set(data, 1);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
@ -63,9 +62,9 @@ main(int argc, char *argv[])
|
|||
elm_win_autodel_set(win, 1);
|
||||
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
||||
|
||||
o = efl_wl_add(evas_object_evas_get(win));
|
||||
efl_wl_aspect_set(o, 1);
|
||||
efl_wl_minmax_set(o, 1);
|
||||
o = efl_add(EFL_CANVAS_WL_CLASS, win);
|
||||
efl_canvas_wl_aspect_set(o, 1);
|
||||
efl_canvas_wl_minmax_set(o, 1);
|
||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, hints_changed, win);
|
|
@ -1,7 +1,7 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
#include "Efl_Wl.h"
|
||||
#include "Efl_Canvas_Wl.h"
|
||||
#include "Elementary.h"
|
||||
|
||||
static Evas_Object *win;
|
||||
|
@ -18,7 +18,7 @@ static unsigned int n;
|
|||
static Eina_Bool
|
||||
dostuff(void *data)
|
||||
{
|
||||
efl_wl_run(data, cmds[n++]);
|
||||
efl_canvas_wl_run(data, cmds[n++]);
|
||||
evas_object_focus_set(data, 1);
|
||||
return n != num_cmds;
|
||||
}
|
||||
|
@ -26,13 +26,13 @@ dostuff(void *data)
|
|||
static void
|
||||
prev_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
efl_wl_prev(data);
|
||||
efl_canvas_wl_surface_prev(data);
|
||||
}
|
||||
|
||||
static void
|
||||
next_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
efl_wl_next(data);
|
||||
efl_canvas_wl_surface_next(data);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -69,7 +69,7 @@ main(int argc, char *argv[])
|
|||
evas_object_show(next);
|
||||
elm_table_pack(o, next, 1, 0, 1, 1);
|
||||
|
||||
comp = efl_wl_add(evas_object_evas_get(win));
|
||||
comp = efl_add(EFL_CANVAS_WL_CLASS, win);
|
||||
evas_object_size_hint_min_set(comp, 640, 480);
|
||||
elm_table_pack(o, comp, 0, 1, 2, 1);
|
||||
evas_object_size_hint_align_set(comp, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
@ -0,0 +1,13 @@
|
|||
executable('efl_canvas_wl_test',
|
||||
'efl_canvas_wl_test.c',
|
||||
include_directories : config_dir,
|
||||
dependencies: [efl_canvas_wl, efl_canvas_wl_deps, efl_canvas_wl_pub_deps, elementary],
|
||||
install: true,
|
||||
)
|
||||
|
||||
executable('efl_canvas_wl_test_stack',
|
||||
'efl_canvas_wl_test_stack.c',
|
||||
include_directories : config_dir,
|
||||
dependencies: [efl_canvas_wl, efl_canvas_wl_deps, efl_canvas_wl_pub_deps, elementary],
|
||||
install: true,
|
||||
)
|
|
@ -1,13 +0,0 @@
|
|||
executable('efl_wl_test',
|
||||
'efl_wl_test.c',
|
||||
include_directories : config_dir,
|
||||
dependencies: [efl_wl, elementary],
|
||||
install: true,
|
||||
)
|
||||
|
||||
executable('efl_wl_test_stack',
|
||||
'efl_wl_test_stack.c',
|
||||
include_directories : config_dir,
|
||||
dependencies: [efl_wl, elementary],
|
||||
install: true,
|
||||
)
|
|
@ -0,0 +1,14 @@
|
|||
#include "common.h"
|
||||
|
||||
static int _verbose = 0;
|
||||
|
||||
void
|
||||
ex_printf(int verbose, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
if (!_verbose || verbose > _verbose) return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vprintf(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <Elementary.h>
|
||||
#include <Exactness.h>
|
||||
#include <exactness_private.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Eina_Debug_Session *session;
|
||||
int srcid;
|
||||
void *buffer;
|
||||
unsigned int size;
|
||||
} _Main_Loop_Info;
|
||||
|
||||
#define WRAPPER_TO_XFER_MAIN_LOOP(foo) \
|
||||
static void \
|
||||
_intern_main_loop ## foo(void *data) \
|
||||
{ \
|
||||
_Main_Loop_Info *info = data; \
|
||||
_main_loop ## foo(info->session, info->srcid, info->buffer, info->size); \
|
||||
free(info->buffer); \
|
||||
free(info); \
|
||||
} \
|
||||
static Eina_Bool \
|
||||
foo(Eina_Debug_Session *session, int srcid, void *buffer, int size) \
|
||||
{ \
|
||||
_Main_Loop_Info *info = calloc(1, sizeof(*info)); \
|
||||
info->session = session; \
|
||||
info->srcid = srcid; \
|
||||
info->size = size; \
|
||||
if (info->size) \
|
||||
{ \
|
||||
info->buffer = malloc(info->size); \
|
||||
memcpy(info->buffer, buffer, info->size); \
|
||||
} \
|
||||
ecore_main_loop_thread_safe_call_async(_intern_main_loop ## foo, info); \
|
||||
return EINA_TRUE; \
|
||||
}
|
||||
|
||||
#ifndef WORDS_BIGENDIAN
|
||||
#define SWAP_64(x) x
|
||||
#define SWAP_32(x) x
|
||||
#define SWAP_16(x) x
|
||||
#define SWAP_DBL(x) x
|
||||
#else
|
||||
#define SWAP_64(x) eina_swap64(x)
|
||||
#define SWAP_32(x) eina_swap32(x)
|
||||
#define SWAP_16(x) eina_swap16(x)
|
||||
#define SWAP_DBL(x) SWAP_64(x)
|
||||
#endif
|
||||
|
||||
#define EXTRACT_INT(_buf) \
|
||||
({ \
|
||||
int __i; \
|
||||
memcpy(&__i, _buf, sizeof(int)); \
|
||||
_buf += sizeof(int); \
|
||||
SWAP_32(__i); \
|
||||
})
|
||||
|
||||
#define EXTRACT_DOUBLE(_buf) \
|
||||
({ \
|
||||
double __d; \
|
||||
memcpy(&__d, _buf, sizeof(double)); \
|
||||
_buf += sizeof(double); \
|
||||
SWAP_DBL(__d); \
|
||||
})
|
||||
|
||||
#define EXTRACT_STRING(_buf) \
|
||||
({ \
|
||||
char *__s = _buf ? strdup(_buf) : NULL; \
|
||||
int __len = (__s ? strlen(__s) : 0) + 1; \
|
||||
_buf += __len; \
|
||||
__s; \
|
||||
})
|
||||
|
||||
#define STORE_INT(_buf, __i) \
|
||||
({ \
|
||||
int __si = SWAP_32(__i); \
|
||||
memcpy(_buf, &__si, sizeof(int)); \
|
||||
_buf += sizeof(int); \
|
||||
})
|
||||
|
||||
#define STORE_DOUBLE(_buf, __d) \
|
||||
{ \
|
||||
double __d2 = SWAP_DBL(__d); \
|
||||
memcpy(_buf, &__d2, sizeof(double)); \
|
||||
_buf += sizeof(double); \
|
||||
}
|
||||
|
||||
#define STORE_STRING(_buf, __s) \
|
||||
{ \
|
||||
int __len = (__s ? strlen(__s) : 0) + 1; \
|
||||
if (__s) memcpy(_buf, __s, __len); \
|
||||
else *_buf = '\0'; \
|
||||
_buf += __len; \
|
||||
}
|
||||
|
||||
void ex_printf(int verbose, const char *fmt, ...);
|
|
@ -8,6 +8,7 @@
|
|||
#include <Ecore_File.h>
|
||||
|
||||
#include "exactness_private.h"
|
||||
#include "common.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
# include <evil_private.h> /* mkdir */
|
||||
|
@ -18,8 +19,6 @@
|
|||
#define ORIG_SUBDIR "orig"
|
||||
#define CURRENT_SUBDIR "current"
|
||||
|
||||
#define EXACTNESS_PATH_MAX 1024
|
||||
|
||||
#define BUF_SIZE 1024
|
||||
|
||||
typedef struct
|
||||
|
@ -52,17 +51,6 @@ static Eina_List *_compare_errors;
|
|||
|
||||
static Eina_Bool _job_consume();
|
||||
|
||||
static void
|
||||
_printf(int verbose, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
if (!_verbose || verbose > _verbose) return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vprintf(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
static Exactness_Image *
|
||||
_image_load(const char *filename)
|
||||
{
|
||||
|
@ -154,7 +142,7 @@ _exu_imgs_unpack(const char *exu_path, const char *dir, const char *ent_name)
|
|||
{
|
||||
Eo *o = evas_object_image_add(e);
|
||||
char *filename = alloca(strlen(dir) + strlen(ent_name) + 20);
|
||||
snprintf(filename, EXACTNESS_PATH_MAX, "%s/%s%c%.3d.png",
|
||||
snprintf(filename, PATH_MAX, "%s/%s%c%.3d.png",
|
||||
dir, ent_name, SHOT_DELIMITER, n++);
|
||||
evas_object_image_size_set(o, img->w, img->h);
|
||||
evas_object_image_data_set(o, img->pixels);
|
||||
|
@ -171,7 +159,7 @@ _exu_imgs_unpack(const char *exu_path, const char *dir, const char *ent_name)
|
|||
static void
|
||||
_run_test_compare(const List_Entry *ent)
|
||||
{
|
||||
char *path = alloca(EXACTNESS_PATH_MAX);
|
||||
char *path = alloca(PATH_MAX);
|
||||
char *origdir = alloca(strlen(_dest_dir) + 20);
|
||||
const char *base_dir;
|
||||
Eina_List *itr;
|
||||
|
@ -228,7 +216,7 @@ found:
|
|||
static Eina_Bool
|
||||
_run_command_prepare(const List_Entry *ent, char *buf)
|
||||
{
|
||||
char scn_path[EXACTNESS_PATH_MAX];
|
||||
char scn_path[PATH_MAX];
|
||||
Eina_Strbuf *sbuf;
|
||||
const char *base_dir;
|
||||
Eina_List *itr;
|
||||
|
@ -283,7 +271,7 @@ ok:
|
|||
}
|
||||
strncpy(buf, eina_strbuf_string_get(sbuf), SCHEDULER_CMD_SIZE-1);
|
||||
eina_strbuf_free(sbuf);
|
||||
_printf(1, "Command: %s\n", buf);
|
||||
ex_printf(1, "Command: %s\n", buf);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -474,7 +462,7 @@ main(int argc, char *argv[])
|
|||
const char *list_file;
|
||||
Eina_List *itr;
|
||||
const char *base_dir;
|
||||
char tmp[EXACTNESS_PATH_MAX];
|
||||
char tmp[PATH_MAX];
|
||||
Eina_Bool mode_play = EINA_FALSE, mode_init = EINA_FALSE, mode_simulation = EINA_FALSE;
|
||||
Eina_Bool want_quit = EINA_FALSE, scan_objs = EINA_FALSE;
|
||||
Ecore_Getopt_Value values[] = {
|
||||
|
@ -558,8 +546,8 @@ main(int argc, char *argv[])
|
|||
if (mode_play)
|
||||
{
|
||||
_mode = RUN_PLAY;
|
||||
if (snprintf(tmp, EXACTNESS_PATH_MAX, "%s/%s", _dest_dir, CURRENT_SUBDIR)
|
||||
>= EXACTNESS_PATH_MAX)
|
||||
if (snprintf(tmp, PATH_MAX, "%s/%s", _dest_dir, CURRENT_SUBDIR)
|
||||
>= PATH_MAX)
|
||||
{
|
||||
fprintf(stderr, "Path too long: %s", tmp);
|
||||
ret = 1;
|
||||
|
@ -575,8 +563,8 @@ main(int argc, char *argv[])
|
|||
else if (mode_init)
|
||||
{
|
||||
_mode = RUN_INIT;
|
||||
if (snprintf(tmp, EXACTNESS_PATH_MAX, "%s/%s", _dest_dir, ORIG_SUBDIR)
|
||||
>= EXACTNESS_PATH_MAX)
|
||||
if (snprintf(tmp, PATH_MAX, "%s/%s", _dest_dir, ORIG_SUBDIR)
|
||||
>= PATH_MAX)
|
||||
{
|
||||
fprintf(stderr, "Path too long: %s", tmp);
|
||||
ret = 1;
|
||||
|
@ -624,9 +612,9 @@ main(int argc, char *argv[])
|
|||
if (_errors || _compare_errors)
|
||||
{
|
||||
FILE *report_file;
|
||||
char report_filename[EXACTNESS_PATH_MAX] = "";
|
||||
char report_filename[PATH_MAX] = "";
|
||||
/* Generate the filename. */
|
||||
snprintf(report_filename, EXACTNESS_PATH_MAX,
|
||||
snprintf(report_filename, PATH_MAX,
|
||||
"%s/%s/errors.html",
|
||||
_dest_dir, mode_init ? ORIG_SUBDIR : CURRENT_SUBDIR);
|
||||
report_file = fopen(report_filename, "w+");
|
||||
|
@ -660,8 +648,8 @@ main(int argc, char *argv[])
|
|||
EINA_LIST_FREE(_compare_errors, test_name)
|
||||
{
|
||||
Eina_Bool is_from_exu;
|
||||
char origpath[EXACTNESS_PATH_MAX];
|
||||
snprintf(origpath, EXACTNESS_PATH_MAX, "%s/%s/orig/%s",
|
||||
char origpath[PATH_MAX];
|
||||
snprintf(origpath, PATH_MAX, "%s/%s/orig/%s",
|
||||
_dest_dir, CURRENT_SUBDIR, test_name);
|
||||
is_from_exu = ecore_file_exists(origpath);
|
||||
printf("\t* %s\n", test_name);
|
||||
|
|
|
@ -14,81 +14,7 @@
|
|||
#include <Elementary.h>
|
||||
|
||||
#include <Exactness.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Eina_Debug_Session *session;
|
||||
int srcid;
|
||||
void *buffer;
|
||||
unsigned int size;
|
||||
} _Main_Loop_Info;
|
||||
|
||||
#define WRAPPER_TO_XFER_MAIN_LOOP(foo) \
|
||||
static void \
|
||||
_intern_main_loop ## foo(void *data) \
|
||||
{ \
|
||||
_Main_Loop_Info *info = data; \
|
||||
_main_loop ## foo(info->session, info->srcid, info->buffer, info->size); \
|
||||
free(info->buffer); \
|
||||
free(info); \
|
||||
} \
|
||||
static Eina_Bool \
|
||||
foo(Eina_Debug_Session *session, int srcid, void *buffer, int size) \
|
||||
{ \
|
||||
_Main_Loop_Info *info = calloc(1, sizeof(*info)); \
|
||||
info->session = session; \
|
||||
info->srcid = srcid; \
|
||||
info->size = size; \
|
||||
if (info->size) \
|
||||
{ \
|
||||
info->buffer = malloc(info->size); \
|
||||
memcpy(info->buffer, buffer, info->size); \
|
||||
} \
|
||||
ecore_main_loop_thread_safe_call_async(_intern_main_loop ## foo, info); \
|
||||
return EINA_TRUE; \
|
||||
}
|
||||
|
||||
#ifndef WORDS_BIGENDIAN
|
||||
#define SWAP_64(x) x
|
||||
#define SWAP_32(x) x
|
||||
#define SWAP_16(x) x
|
||||
#define SWAP_DBL(x) x
|
||||
#else
|
||||
#define SWAP_64(x) eina_swap64(x)
|
||||
#define SWAP_32(x) eina_swap32(x)
|
||||
#define SWAP_16(x) eina_swap16(x)
|
||||
#define SWAP_DBL(x) SWAP_64(x)
|
||||
#endif
|
||||
|
||||
#define EXTRACT_INT(_buf) \
|
||||
({ \
|
||||
int __i; \
|
||||
memcpy(&__i, _buf, sizeof(int)); \
|
||||
_buf += sizeof(int); \
|
||||
SWAP_32(__i); \
|
||||
})
|
||||
|
||||
#define STORE_INT(_buf, __i) \
|
||||
{ \
|
||||
int __i2 = SWAP_32(__i); \
|
||||
memcpy(_buf, &__i2, sizeof(int)); \
|
||||
_buf += sizeof(int); \
|
||||
}
|
||||
|
||||
#define STORE_DOUBLE(_buf, __d) \
|
||||
{ \
|
||||
double __d2 = SWAP_DBL(__d); \
|
||||
memcpy(_buf, &__d2, sizeof(double)); \
|
||||
_buf += sizeof(double); \
|
||||
}
|
||||
|
||||
#define STORE_STRING(_buf, __s) \
|
||||
{ \
|
||||
int __len = (__s ? strlen(__s) : 0) + 1; \
|
||||
if (__s) memcpy(_buf, __s, __len); \
|
||||
else *_buf = '\0'; \
|
||||
_buf += __len; \
|
||||
}
|
||||
#include "common.h"
|
||||
|
||||
static Eina_Stringshare *_src_filename = NULL;
|
||||
static Exactness_Unit *_src_unit = NULL;
|
||||
|
@ -134,17 +60,6 @@ EINA_DEBUG_OPCODES_ARRAY_DEFINE(_debug_ops,
|
|||
{NULL, NULL, NULL}
|
||||
);
|
||||
|
||||
static void
|
||||
_printf(int verbose, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
if (!_verbose || verbose > _verbose) return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vprintf(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
static void
|
||||
_feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
||||
{
|
||||
|
@ -152,15 +67,15 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
{
|
||||
case EXACTNESS_ACTION_MOUSE_IN:
|
||||
{
|
||||
_printf(1, "Mouse in\n");
|
||||
_printf(2, "%s evas_event_feed_mouse_in n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(1, "Mouse in\n");
|
||||
ex_printf(2, "%s evas_event_feed_mouse_in n_evas=<%d>\n", __func__, n_evas);
|
||||
eina_debug_session_send(_session, _cid, _mouse_in_op, &n_evas, sizeof(int));
|
||||
break;
|
||||
}
|
||||
case EXACTNESS_ACTION_MOUSE_OUT:
|
||||
{
|
||||
_printf(1, "Mouse out\n");
|
||||
_printf(2, "%s evas_event_feed_mouse_out n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(1, "Mouse out\n");
|
||||
ex_printf(2, "%s evas_event_feed_mouse_out n_evas=<%d>\n", __func__, n_evas);
|
||||
eina_debug_session_send(_session, _cid, _mouse_out_op, &n_evas, sizeof(int));
|
||||
break;
|
||||
}
|
||||
|
@ -169,8 +84,8 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
Exactness_Action_Mouse_Wheel *t = data;
|
||||
int len = 3*sizeof(int);
|
||||
char *buf = malloc(len), *tmp = buf;
|
||||
_printf(1, "Mouse wheel\n");
|
||||
_printf(2, "%s evas_event_feed_mouse_wheel n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(1, "Mouse wheel\n");
|
||||
ex_printf(2, "%s evas_event_feed_mouse_wheel n_evas=<%d>\n", __func__, n_evas);
|
||||
STORE_INT(tmp, n_evas);
|
||||
STORE_INT(tmp, t->direction);
|
||||
STORE_INT(tmp, t->z);
|
||||
|
@ -184,7 +99,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
Exactness_Action_Multi_Event *t = data;
|
||||
int len = 5*sizeof(int)+7*sizeof(double)+sizeof(int);
|
||||
char *buf = malloc(len), *tmp = buf;
|
||||
_printf(2, "%s %s n_evas=<%d>\n", __func__,
|
||||
ex_printf(2, "%s %s n_evas=<%d>\n", __func__,
|
||||
type == EXACTNESS_ACTION_MULTI_DOWN ? "evas_event_feed_multi_down" :
|
||||
"evas_event_feed_multi_up", n_evas);
|
||||
STORE_INT(tmp, n_evas);
|
||||
|
@ -211,7 +126,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
Exactness_Action_Multi_Move *t = data;
|
||||
int len = 4*sizeof(int)+7*sizeof(double);
|
||||
char *buf = malloc(len), *tmp = buf;
|
||||
_printf(2, "%s evas_event_feed_multi_move n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s evas_event_feed_multi_move n_evas=<%d>\n", __func__, n_evas);
|
||||
STORE_INT(tmp, n_evas);
|
||||
STORE_INT(tmp, t->d);
|
||||
STORE_INT(tmp, t->x);
|
||||
|
@ -237,7 +152,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
len += t->string ? strlen(t->string) : 0;
|
||||
len += t->compose ? strlen(t->compose) : 0;
|
||||
char *buf = malloc(len), *tmp = buf;
|
||||
_printf(2, "%s %s n_evas=<%d>\n", __func__,
|
||||
ex_printf(2, "%s %s n_evas=<%d>\n", __func__,
|
||||
type == EXACTNESS_ACTION_KEY_DOWN ? "evas_event_feed_key_down " :
|
||||
"evas_event_feed_key_up", n_evas);
|
||||
STORE_INT(tmp, n_evas);
|
||||
|
@ -254,7 +169,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
}
|
||||
case EXACTNESS_ACTION_TAKE_SHOT:
|
||||
{
|
||||
_printf(2, "%s take shot n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s take shot n_evas=<%d>\n", __func__, n_evas);
|
||||
eina_debug_session_send(_session, _cid, _take_shot_op, &n_evas, sizeof(int));
|
||||
break;
|
||||
}
|
||||
|
@ -265,7 +180,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
len += t->wdg_name ? strlen(t->wdg_name) : 0;
|
||||
len += t->event_name ? strlen(t->event_name) : 0;
|
||||
char *buf = malloc(len), *tmp = buf;
|
||||
_printf(2, "%s %s\n", __func__, "EFL event");
|
||||
ex_printf(2, "%s %s\n", __func__, "EFL event");
|
||||
STORE_STRING(tmp, t->wdg_name);
|
||||
STORE_STRING(tmp, t->event_name);
|
||||
eina_debug_session_send(_session, _cid, _efl_event_op, buf, len);
|
||||
|
@ -278,7 +193,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
int len = 0;
|
||||
len += t->wdg_name ? strlen(t->wdg_name) : 0;
|
||||
char *buf = malloc(len), *tmp = buf;
|
||||
_printf(2, "%s %s\n", __func__, "Click On");
|
||||
ex_printf(2, "%s %s\n", __func__, "Click On");
|
||||
STORE_STRING(tmp, t->wdg_name);
|
||||
eina_debug_session_send(_session, _cid, _click_on_op, buf, len);
|
||||
free(buf);
|
||||
|
@ -286,7 +201,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
}
|
||||
case EXACTNESS_ACTION_STABILIZE:
|
||||
{
|
||||
_printf(2, "%s stabilize\n", __func__);
|
||||
ex_printf(2, "%s stabilize\n", __func__);
|
||||
eina_debug_session_send(_session, _cid, _stabilize_op, NULL, 0);
|
||||
break;
|
||||
}
|
||||
|
@ -321,7 +236,7 @@ _src_open()
|
|||
{
|
||||
double diff_time = 0; /* Time to wait before feeding the first event */
|
||||
|
||||
_printf(2, "<%s> Source file is <%s>\n", __func__, _src_filename);
|
||||
ex_printf(2, "<%s> Source file is <%s>\n", __func__, _src_filename);
|
||||
if (!strcmp(_src_filename + strlen(_src_filename) - 4,".exu"))
|
||||
{
|
||||
_src_unit = exactness_unit_file_read(_src_filename);
|
||||
|
@ -336,7 +251,7 @@ _src_open()
|
|||
|
||||
if (act->delay_ms)
|
||||
{
|
||||
_printf(2, " Waiting <%f>\n", diff_time);
|
||||
ex_printf(2, " Waiting <%f>\n", diff_time);
|
||||
ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
#include <Exactness.h>
|
||||
#include <Efl_Ui.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#define LDIFF(x) "<b><color=#F0F>"#x"</color></b>"
|
||||
#define RDIFF(x) "<b><color=#0FF>"#x"</color></b>"
|
||||
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
exactness_bin = executable('exactness',
|
||||
[ 'exactness.c' ],
|
||||
dependencies: [ ecore, ecore_evas, ecore_file, exactness ],
|
||||
[ 'exactness.c', 'common.c', 'common.h' ],
|
||||
dependencies: [ ecore, ecore_evas, ecore_file, elementary, exactness ],
|
||||
c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
|
||||
install: true,
|
||||
)
|
||||
|
||||
exactness_inject_bin = executable('exactness_inject',
|
||||
[ 'injector.c' ],
|
||||
[ 'injector.c', 'common.c', 'common.h' ],
|
||||
dependencies: [ elementary, exactness ],
|
||||
c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
|
||||
install: true,
|
||||
)
|
||||
|
||||
exactness_inspect_bin = executable('exactness_inspect',
|
||||
[ 'inspect.c' ],
|
||||
[ 'inspect.c', 'common.c', 'common.h' ],
|
||||
dependencies: [ elementary, exactness ],
|
||||
c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
@ -28,15 +31,16 @@ edjs = custom_target('player_entry',
|
|||
depends : edje_depends)
|
||||
|
||||
exactness_play_bin = executable('exactness_play',
|
||||
[ 'player.c', edjs ],
|
||||
[ 'player.c', 'common.c', 'common.h', edjs ],
|
||||
dependencies: [ elementary, exactness ],
|
||||
c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
|
||||
install: true,
|
||||
)
|
||||
|
||||
exactness_record_bin = executable('exactness_record',
|
||||
[ 'recorder.c' ],
|
||||
[ 'recorder.c', 'common.c', 'common.h' ],
|
||||
dependencies: [ elementary, exactness ],
|
||||
c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
|
|
@ -30,88 +30,12 @@
|
|||
#include <Exactness.h>
|
||||
|
||||
#include "exactness_private.h"
|
||||
#include "common.h"
|
||||
|
||||
#define PATH_ 1024
|
||||
#define CMD_LINE_MAX 256
|
||||
#define IMAGE_FILENAME_EXT ".png"
|
||||
#define PAUSE_KEY_STR "F2"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Eina_Debug_Session *session;
|
||||
int srcid;
|
||||
void *buffer;
|
||||
unsigned int size;
|
||||
} _Main_Loop_Info;
|
||||
|
||||
#define WRAPPER_TO_XFER_MAIN_LOOP(foo) \
|
||||
static void \
|
||||
_intern_main_loop ## foo(void *data) \
|
||||
{ \
|
||||
_Main_Loop_Info *info = data; \
|
||||
_main_loop ## foo(info->session, info->srcid, info->buffer, info->size); \
|
||||
free(info->buffer); \
|
||||
free(info); \
|
||||
} \
|
||||
static Eina_Bool \
|
||||
foo(Eina_Debug_Session *session, int srcid, void *buffer, int size) \
|
||||
{ \
|
||||
_Main_Loop_Info *info = calloc(1, sizeof(*info)); \
|
||||
info->session = session; \
|
||||
info->srcid = srcid; \
|
||||
info->size = size; \
|
||||
if (info->size) \
|
||||
{ \
|
||||
info->buffer = malloc(info->size); \
|
||||
memcpy(info->buffer, buffer, info->size); \
|
||||
} \
|
||||
ecore_main_loop_thread_safe_call_async(_intern_main_loop ## foo, info); \
|
||||
return EINA_TRUE; \
|
||||
}
|
||||
|
||||
#ifndef WORDS_BIGENDIAN
|
||||
#define SWAP_64(x) x
|
||||
#define SWAP_32(x) x
|
||||
#define SWAP_16(x) x
|
||||
#define SWAP_DBL(x) x
|
||||
#else
|
||||
#define SWAP_64(x) eina_swap64(x)
|
||||
#define SWAP_32(x) eina_swap32(x)
|
||||
#define SWAP_16(x) eina_swap16(x)
|
||||
#define SWAP_DBL(x) SWAP_64(x)
|
||||
#endif
|
||||
|
||||
#define EXTRACT_INT(_buf) \
|
||||
({ \
|
||||
int __i; \
|
||||
memcpy(&__i, _buf, sizeof(int)); \
|
||||
_buf += sizeof(int); \
|
||||
SWAP_32(__i); \
|
||||
})
|
||||
|
||||
#define EXTRACT_DOUBLE(_buf) \
|
||||
({ \
|
||||
double __d; \
|
||||
memcpy(&__d, _buf, sizeof(double)); \
|
||||
_buf += sizeof(double); \
|
||||
SWAP_DBL(__d); \
|
||||
})
|
||||
|
||||
#define EXTRACT_STRING(_buf) \
|
||||
({ \
|
||||
char *__s = _buf ? strdup(_buf) : NULL; \
|
||||
int __len = (__s ? strlen(__s) : 0) + 1; \
|
||||
_buf += __len; \
|
||||
__s; \
|
||||
})
|
||||
|
||||
#define STORE_INT(_buf, __i) \
|
||||
({ \
|
||||
int __si = SWAP_32(__i); \
|
||||
memcpy(_buf, &__si, sizeof(int)); \
|
||||
_buf += sizeof(int); \
|
||||
})
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FTYPE_UNKNOWN,
|
||||
|
@ -152,17 +76,6 @@ static Eina_Bool _exit_required = EINA_FALSE;
|
|||
static Eina_Bool _pause_request = EINA_FALSE;
|
||||
static Eina_Bool _playing_status = EINA_FALSE;
|
||||
|
||||
static void
|
||||
_printf(int verbose, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
if (!_verbose || verbose > _verbose) return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vprintf(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
static Exactness_Image *
|
||||
_snapshot_shot_get(Evas *e)
|
||||
{
|
||||
|
@ -226,7 +139,7 @@ _evas_render_post_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
|||
Eo *o = evas_object_image_add(event->object);
|
||||
evas_object_image_size_set(o, ex_shot->w, ex_shot->h);
|
||||
evas_object_image_data_set(o, ex_shot->pixels);
|
||||
_printf(1, "Shot taken (%s).\n", filename);
|
||||
ex_printf(1, "Shot taken (%s).\n", filename);
|
||||
if (!evas_object_image_save(o, filename, NULL, NULL))
|
||||
{
|
||||
printf("Cannot save widget to <%s>\n", filename);
|
||||
|
@ -238,7 +151,7 @@ _evas_render_post_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
|||
Exactness_Image *ex_img = e_data;
|
||||
memcpy(ex_img, ex_shot, sizeof(Exactness_Image));
|
||||
ex_shot->pixels = NULL;
|
||||
_printf(1, "Shot taken (in %s).\n", _dest);
|
||||
ex_printf(1, "Shot taken (in %s).\n", _dest);
|
||||
}
|
||||
else if (_dest_type == FTYPE_REMOTE)
|
||||
{
|
||||
|
@ -369,23 +282,23 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
{
|
||||
case EXACTNESS_ACTION_MOUSE_IN:
|
||||
{
|
||||
_printf(1, "Mouse in\n");
|
||||
_printf(2, "%s evas_event_feed_mouse_in n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(1, "Mouse in\n");
|
||||
ex_printf(2, "%s evas_event_feed_mouse_in n_evas=<%d>\n", __func__, n_evas);
|
||||
if (e) evas_event_feed_mouse_in(e, time(NULL), NULL);
|
||||
break;
|
||||
}
|
||||
case EXACTNESS_ACTION_MOUSE_OUT:
|
||||
{
|
||||
_printf(1, "Mouse out\n");
|
||||
_printf(2, "%s evas_event_feed_mouse_out n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(1, "Mouse out\n");
|
||||
ex_printf(2, "%s evas_event_feed_mouse_out n_evas=<%d>\n", __func__, n_evas);
|
||||
if (e) evas_event_feed_mouse_out(e, time(NULL), NULL);
|
||||
break;
|
||||
}
|
||||
case EXACTNESS_ACTION_MOUSE_WHEEL:
|
||||
{
|
||||
Exactness_Action_Mouse_Wheel *t = data;
|
||||
_printf(1, "Mouse wheel\n");
|
||||
_printf(2, "%s evas_event_feed_mouse_wheel n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(1, "Mouse wheel\n");
|
||||
ex_printf(2, "%s evas_event_feed_mouse_wheel n_evas=<%d>\n", __func__, n_evas);
|
||||
if (e) evas_event_feed_mouse_wheel(e, t->direction, t->z, time(NULL), NULL);
|
||||
|
||||
break;
|
||||
|
@ -393,7 +306,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
case EXACTNESS_ACTION_MULTI_DOWN:
|
||||
{
|
||||
Exactness_Action_Multi_Event *t = data;
|
||||
_printf(2, "%s evas_event_feed_multi_down n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s evas_event_feed_multi_down n_evas=<%d>\n", __func__, n_evas);
|
||||
if (!t->d)
|
||||
{
|
||||
if (e) evas_event_feed_mouse_down(e, t->b, t->flags, time(NULL), NULL);
|
||||
|
@ -412,7 +325,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
case EXACTNESS_ACTION_MULTI_UP:
|
||||
{
|
||||
Exactness_Action_Multi_Event *t = data;
|
||||
_printf(2, "%s evas_event_feed_multi_up n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s evas_event_feed_multi_up n_evas=<%d>\n", __func__, n_evas);
|
||||
if (!t->d)
|
||||
{
|
||||
if (e) evas_event_feed_mouse_up(e, t->b, t->flags, time(NULL), NULL);
|
||||
|
@ -431,7 +344,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
case EXACTNESS_ACTION_MULTI_MOVE:
|
||||
{
|
||||
Exactness_Action_Multi_Move *t = data;
|
||||
_printf(2, "%s evas_event_feed_multi_move n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s evas_event_feed_multi_move n_evas=<%d>\n", __func__, n_evas);
|
||||
if (!t->d)
|
||||
{
|
||||
if (e) evas_event_feed_mouse_move(e, t->x, t->y, time(NULL), NULL);
|
||||
|
@ -454,7 +367,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
case EXACTNESS_ACTION_KEY_DOWN:
|
||||
{
|
||||
Exactness_Action_Key_Down_Up *t = data;
|
||||
_printf(2, "%s evas_event_feed_key_down n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s evas_event_feed_key_down n_evas=<%d>\n", __func__, n_evas);
|
||||
if (e)
|
||||
evas_event_feed_key_down_with_keycode(e,
|
||||
t->keyname, t->key, t->string,
|
||||
|
@ -464,7 +377,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
case EXACTNESS_ACTION_KEY_UP:
|
||||
{
|
||||
Exactness_Action_Key_Down_Up *t = data;
|
||||
_printf(2, "%s evas_event_feed_key_up n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s evas_event_feed_key_up n_evas=<%d>\n", __func__, n_evas);
|
||||
if (e) evas_event_feed_key_up_with_keycode(e,
|
||||
t->keyname, t->key, t->string,
|
||||
t->compose, time(NULL), NULL, t->keycode);
|
||||
|
@ -473,7 +386,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
}
|
||||
case EXACTNESS_ACTION_TAKE_SHOT:
|
||||
{
|
||||
_printf(2, "%s take shot n_evas=<%d>\n", __func__, n_evas);
|
||||
ex_printf(2, "%s take shot n_evas=<%d>\n", __func__, n_evas);
|
||||
if (rect) evas_object_color_set(rect, 0, 0, 255, 255);
|
||||
_cur_shot_id++;
|
||||
if (_dest_type != FTYPE_UNKNOWN && e) _shot_do(e);
|
||||
|
@ -489,7 +402,7 @@ _feed_event(Exactness_Action_Type type, unsigned int n_evas, void *data)
|
|||
Eo *o = efl_name_find(e, t->wdg_name);
|
||||
if (o)
|
||||
{
|
||||
_printf(2, "%s EFL event invoke %s on %s\n",
|
||||
ex_printf(2, "%s EFL event invoke %s on %s\n",
|
||||
__func__, t->event_name, t->wdg_name);
|
||||
Efl_Event_Description d;
|
||||
found = EINA_TRUE;
|
||||
|
@ -526,7 +439,7 @@ wdg_found:
|
|||
Exactness_Action_Multi_Event *d_event = calloc(1, sizeof(*d_event));
|
||||
Exactness_Action *act, *prev_act = eina_list_data_get(_cur_event_list);
|
||||
|
||||
_printf(2, "%s click on %s\n", __func__, t->wdg_name);
|
||||
ex_printf(2, "%s click on %s\n", __func__, t->wdg_name);
|
||||
act = calloc(1, sizeof(*act));
|
||||
act->type = EXACTNESS_ACTION_MULTI_MOVE;
|
||||
act->delay_ms = 100;
|
||||
|
@ -563,7 +476,7 @@ wdg_found:
|
|||
}
|
||||
case EXACTNESS_ACTION_STABILIZE:
|
||||
{
|
||||
_printf(2, "%s stabilize\n", __func__);
|
||||
ex_printf(2, "%s stabilize\n", __func__);
|
||||
if (rect) evas_object_color_set(rect, 255, 165, 0, 255);
|
||||
ecore_timer_add(0.1, _stabilization_timer_cb, NULL);
|
||||
break;
|
||||
|
@ -591,7 +504,7 @@ _feed_event_timer_cb(void *data EINA_UNUSED)
|
|||
if (act->type != EXACTNESS_ACTION_STABILIZE)
|
||||
{
|
||||
act = eina_list_data_get(_cur_event_list);
|
||||
_printf(2, " %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0);
|
||||
ex_printf(2, " %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0);
|
||||
ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -605,7 +518,7 @@ _stabilization_timer_cb(void *data EINA_UNUSED)
|
|||
Evas *e;
|
||||
#define STAB_MAX 5
|
||||
static int need_more = STAB_MAX;
|
||||
_printf(2, "Not stable yet!\n");
|
||||
ex_printf(2, "Not stable yet!\n");
|
||||
EINA_LIST_FOREACH(_evas_list, itr, e)
|
||||
{
|
||||
if (!e) continue;
|
||||
|
@ -629,7 +542,7 @@ _stabilization_timer_cb(void *data EINA_UNUSED)
|
|||
if (_src_type != FTYPE_REMOTE && !_pause_request)
|
||||
{
|
||||
Exactness_Action *act = eina_list_data_get(_cur_event_list);
|
||||
_printf(2, " %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0);
|
||||
ex_printf(2, " %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0);
|
||||
ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL);
|
||||
}
|
||||
need_more = STAB_MAX;
|
||||
|
@ -836,7 +749,7 @@ _src_feed(void *data EINA_UNUSED)
|
|||
|
||||
if (act && act->delay_ms)
|
||||
{
|
||||
_printf(2, " Waiting <%f>\n", act->delay_ms / 1000.0);
|
||||
ex_printf(2, " Waiting <%f>\n", act->delay_ms / 1000.0);
|
||||
ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL);
|
||||
}
|
||||
else
|
||||
|
@ -853,7 +766,7 @@ _src_open()
|
|||
{
|
||||
Eina_List *itr, *itr2;
|
||||
Exactness_Action *act;
|
||||
_printf(2, "<%s> Source file is <%s>\n", __func__, _src_filename);
|
||||
ex_printf(2, "<%s> Source file is <%s>\n", __func__, _src_filename);
|
||||
if (_src_type == FTYPE_EXU)
|
||||
{
|
||||
_src_unit = exactness_unit_file_read(_src_filename);
|
||||
|
@ -951,7 +864,7 @@ _prg_invoke(const char *full_path, int argc, char **argv)
|
|||
static Eina_Stringshare *
|
||||
_prg_full_path_guess(const char *prg)
|
||||
{
|
||||
char full_path[PATH_];
|
||||
char full_path[PATH_MAX];
|
||||
if (strchr(prg, '/')) return eina_stringshare_add(prg);
|
||||
char *env_path = eina_strdup(getenv("PATH"));
|
||||
Eina_Stringshare *ret = NULL;
|
||||
|
@ -1035,10 +948,10 @@ _event_key_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
|||
if (!strcmp(key, PAUSE_KEY_STR) && efl_input_key_pressed_get(evk))
|
||||
{
|
||||
_pause_request = !_pause_request;
|
||||
if (_pause_request) _printf(1, "Pausing scenario\n");
|
||||
if (_pause_request) ex_printf(1, "Pausing scenario\n");
|
||||
else
|
||||
{
|
||||
_printf(1, "Playing scenario\n");
|
||||
ex_printf(1, "Playing scenario\n");
|
||||
if (!_playing_status)
|
||||
_feed_event_timer_cb(NULL);
|
||||
}
|
||||
|
@ -1060,7 +973,7 @@ _my_evas_new(int w EINA_UNUSED, int h EINA_UNUSED)
|
|||
e = _evas_new();
|
||||
if (e)
|
||||
{
|
||||
_printf(1, "New Evas\n");
|
||||
ex_printf(1, "New Evas\n");
|
||||
_evas_list = eina_list_append(_evas_list, e);
|
||||
efl_event_callback_array_add(e, _evas_callbacks(), NULL);
|
||||
}
|
||||
|
@ -1242,7 +1155,7 @@ int main(int argc, char **argv)
|
|||
if (!show_on_screen) setenv("ELM_ENGINE", "buffer", 1);
|
||||
if (_src_unit && _src_unit->fonts_path)
|
||||
{
|
||||
char buf[PATH_];
|
||||
char buf[PATH_MAX];
|
||||
if (!fonts_dir) fonts_dir = "./fonts";
|
||||
sprintf(buf, "%s/%s", fonts_dir, _src_unit->fonts_path);
|
||||
if (!ecore_file_exists(buf))
|
||||
|
@ -1297,9 +1210,9 @@ int main(int argc, char **argv)
|
|||
{
|
||||
argv[i - opt_args] = argv[0] + (argv[i] - argv[opt_args]);
|
||||
}
|
||||
_printf(1, "%s ", argv[i - opt_args]);
|
||||
ex_printf(1, "%s ", argv[i - opt_args]);
|
||||
}
|
||||
_printf(1, "\n");
|
||||
ex_printf(1, "\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
#include <Exactness.h>
|
||||
|
||||
#include <exactness_private.h>
|
||||
#include "common.h"
|
||||
|
||||
#define MAX_PATH 1024
|
||||
#define STABILIZE_KEY_STR "F1"
|
||||
#define SHOT_KEY_STR "F2"
|
||||
#define SAVE_KEY_STR "F3"
|
||||
|
@ -42,17 +42,6 @@ static Exactness_Unit *_unit = NULL;
|
|||
static char *_shot_key = NULL;
|
||||
static unsigned int _last_timestamp = 0.0;
|
||||
|
||||
static void
|
||||
_printf(int verbose, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
if (!_verbose || verbose > _verbose) return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vprintf(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
static Exactness_Action_Type
|
||||
_event_pointer_type_get(Efl_Pointer_Action t)
|
||||
{
|
||||
|
@ -87,7 +76,7 @@ _add_to_list(Exactness_Action_Type type, unsigned int n_evas, unsigned int times
|
|||
prev_v->n_evas == n_evas &&
|
||||
(!len || !memcmp(prev_v->data, data, len))) return;
|
||||
}
|
||||
_printf(1, "Recording %s\n", _exactness_action_type_to_string_get(type));
|
||||
ex_printf(1, "Recording %s\n", _exactness_action_type_to_string_get(type));
|
||||
Exactness_Action *act = malloc(sizeof(*act));
|
||||
act->type = type;
|
||||
act->n_evas = n_evas;
|
||||
|
@ -122,7 +111,7 @@ _event_pointer_cb(void *data, const Efl_Event *event)
|
|||
|
||||
if (!timestamp) return;
|
||||
|
||||
_printf(2, "Calling \"%s\" timestamp=<%u>\n", _exactness_action_type_to_string_get(evt), timestamp);
|
||||
ex_printf(2, "Calling \"%s\" timestamp=<%u>\n", _exactness_action_type_to_string_get(evt), timestamp);
|
||||
|
||||
switch (action)
|
||||
{
|
||||
|
@ -182,20 +171,20 @@ _event_key_cb(void *data, const Efl_Event *event)
|
|||
{
|
||||
if (!strcmp(key, _shot_key))
|
||||
{
|
||||
_printf(2, "Take Screenshot: %s timestamp=<%u>\n", __func__, timestamp);
|
||||
ex_printf(2, "Take Screenshot: %s timestamp=<%u>\n", __func__, timestamp);
|
||||
_add_to_list(EXACTNESS_ACTION_TAKE_SHOT, n_evas, timestamp, NULL, 0);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(key, STABILIZE_KEY_STR))
|
||||
{
|
||||
_printf(2, "Stabilize: %s timestamp=<%u>\n", __func__, timestamp);
|
||||
ex_printf(2, "Stabilize: %s timestamp=<%u>\n", __func__, timestamp);
|
||||
_add_to_list(EXACTNESS_ACTION_STABILIZE, n_evas, timestamp, NULL, 0);
|
||||
return;
|
||||
}
|
||||
if (!strcmp(key, SAVE_KEY_STR))
|
||||
{
|
||||
_output_write();
|
||||
_printf(2, "Save events: %s timestamp=<%u>\n", __func__, timestamp);
|
||||
ex_printf(2, "Save events: %s timestamp=<%u>\n", __func__, timestamp);
|
||||
return;
|
||||
}
|
||||
evt = EXACTNESS_ACTION_KEY_DOWN;
|
||||
|
@ -239,7 +228,7 @@ _my_evas_new(int w EINA_UNUSED, int h EINA_UNUSED)
|
|||
e = _evas_new();
|
||||
if (e)
|
||||
{
|
||||
_printf(1, "New Evas\n");
|
||||
ex_printf(1, "New Evas\n");
|
||||
_evas_list = eina_list_append(_evas_list, e);
|
||||
efl_key_data_set(e, "__evas_id", (void *)(intptr_t)_last_evas_id++);
|
||||
efl_event_callback_array_add(e, _event_pointer_callbacks(), e);
|
||||
|
@ -303,7 +292,7 @@ _prg_invoke(const char *full_path, int argc, char **argv)
|
|||
static Eina_Stringshare *
|
||||
_prg_full_path_guess(const char *prg)
|
||||
{
|
||||
char full_path[MAX_PATH];
|
||||
char full_path[PATH_MAX];
|
||||
if (strchr(prg, '/')) return eina_stringshare_add(prg);
|
||||
char *env_path = eina_strdup(getenv("PATH"));
|
||||
Eina_Stringshare *ret = NULL;
|
||||
|
@ -493,7 +482,7 @@ int main(int argc, char **argv)
|
|||
/* Replace the current command line to hide the Exactness part */
|
||||
int len = argv[argc - 1] + strlen(argv[argc - 1]) - argv[opt_args];
|
||||
memcpy(argv[0], argv[opt_args], len);
|
||||
memset(argv[0] + len, 0, MAX_PATH - len);
|
||||
memset(argv[0] + len, 0, PATH_MAX - len);
|
||||
|
||||
int i;
|
||||
for (i = opt_args; i < argc; i++)
|
||||
|
@ -502,9 +491,9 @@ int main(int argc, char **argv)
|
|||
{
|
||||
argv[i - opt_args] = argv[0] + (argv[i] - argv[opt_args]);
|
||||
}
|
||||
_printf(1, "%s ", argv[i - opt_args]);
|
||||
ex_printf(1, "%s ", argv[i - opt_args]);
|
||||
}
|
||||
_printf(1, "\n");
|
||||
ex_printf(1, "\n");
|
||||
|
||||
if (!_shot_key) _shot_key = getenv("SHOT_KEY");
|
||||
if (!_shot_key) _shot_key = SHOT_KEY_STR;
|
||||
|
|
|
@ -69,6 +69,7 @@ struct _Efl_Exe_Data
|
|||
} fd;
|
||||
#endif
|
||||
Eina_Bool exit_called : 1;
|
||||
Eina_Bool exit_signalled : 1;
|
||||
Eina_Bool run : 1;
|
||||
};
|
||||
|
||||
|
@ -269,10 +270,10 @@ _efl_exe_signal(Eo *obj EINA_UNUSED, Efl_Exe_Data *pd, Efl_Exe_Signal sig)
|
|||
|
||||
switch (sig)
|
||||
{
|
||||
case EFL_EXE_SIGNAL_INT: s = SIGINT; break;
|
||||
case EFL_EXE_SIGNAL_QUIT: s = SIGQUIT; break;
|
||||
case EFL_EXE_SIGNAL_TERM: s = SIGTERM; break;
|
||||
case EFL_EXE_SIGNAL_KILL: s = SIGKILL; break;
|
||||
case EFL_EXE_SIGNAL_INT: s = SIGINT; pd->exit_signalled = EINA_TRUE; break;
|
||||
case EFL_EXE_SIGNAL_QUIT: s = SIGQUIT; pd->exit_signalled = EINA_TRUE; break;
|
||||
case EFL_EXE_SIGNAL_TERM: s = SIGTERM; pd->exit_signalled = EINA_TRUE; break;
|
||||
case EFL_EXE_SIGNAL_KILL: s = SIGKILL; pd->exit_signalled = EINA_TRUE; break;
|
||||
case EFL_EXE_SIGNAL_CONT: s = SIGCONT; break;
|
||||
case EFL_EXE_SIGNAL_STOP: s = SIGSTOP; break;
|
||||
case EFL_EXE_SIGNAL_HUP: s = SIGHUP; break;
|
||||
|
@ -552,7 +553,18 @@ _efl_exe_efl_task_run(Eo *obj, Efl_Exe_Data *pd)
|
|||
int except[2] = { 0, -1 };
|
||||
except[0] = pd->fd.exited_write;
|
||||
eina_file_close_from(3, except);
|
||||
|
||||
#ifdef HAVE_PRCTL
|
||||
if ((pd->flags & EFL_EXE_FLAGS_TERM_WITH_PARENT))
|
||||
{
|
||||
prctl(PR_SET_PDEATHSIG, SIGTERM);
|
||||
}
|
||||
#elif defined(HAVE_PROCCTL)
|
||||
if ((pd->flags & EFL_EXE_FLAGS_TERM_WITH_PARENT))
|
||||
{
|
||||
int sig = SIGTERM;
|
||||
procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &sig);
|
||||
}
|
||||
#endif
|
||||
// actually execute!
|
||||
_exec(cmd, pd->flags, td->flags);
|
||||
// we couldn't exec... uh oh. HAAAAAAAALP!
|
||||
|
@ -570,6 +582,7 @@ _efl_exe_efl_task_end(Eo *obj EINA_UNUSED, Efl_Exe_Data *pd)
|
|||
#ifdef _WIN32
|
||||
#else
|
||||
if (pd->pid == -1) return;
|
||||
pd->exit_signalled = EINA_TRUE;
|
||||
kill(pd->pid, SIGINT);
|
||||
#endif
|
||||
}
|
||||
|
@ -580,6 +593,16 @@ _efl_exe_exit_signal_get(const Eo *obj EINA_UNUSED, Efl_Exe_Data *pd)
|
|||
return pd->exit_signal;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_exe_pid_get(const Eo *obj EINA_UNUSED, Efl_Exe_Data *pd)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
if (pd->pid != -1)
|
||||
return pd->pid;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Object *
|
||||
_efl_exe_efl_object_constructor(Eo *obj, Efl_Exe_Data *pd)
|
||||
{
|
||||
|
@ -602,7 +625,7 @@ _efl_exe_efl_object_destructor(Eo *obj, Efl_Exe_Data *pd)
|
|||
{
|
||||
#ifdef _WIN32
|
||||
#else
|
||||
if (!pd->exit_called)
|
||||
if ((!pd->exit_called) && (!pd->exit_signalled))
|
||||
ERR("Exe being destroyed while child has not exited yet.");
|
||||
if (pd->fd.exited_read >= 0)
|
||||
{
|
||||
|
|
|
@ -18,7 +18,8 @@ enum @beta Efl.Exe_Flags {
|
|||
[[Flags to customize process behavior.]]
|
||||
none = 0, [[No special flags.]]
|
||||
group_leader = 1, [[Process will be executed in its own session.]]
|
||||
hide_io = 4 [[All console IO will be hidden.]]
|
||||
hide_io = 4, [[All console IO will be hidden.]]
|
||||
term_with_parent = 8, [[Makes child receive SIGTERM when parent dies.]]
|
||||
}
|
||||
|
||||
class @beta Efl.Exe extends Efl.Task implements Efl.Io.Reader, Efl.Io.Writer, Efl.Io.Closer, Efl.Core.Command_Line
|
||||
|
@ -51,6 +52,15 @@ class @beta Efl.Exe extends Efl.Task implements Efl.Io.Reader, Efl.Io.Writer, Ef
|
|||
sig: int; [[The exit signal, or -1 if no exit signal happened.]]
|
||||
}
|
||||
}
|
||||
@property pid {
|
||||
[[The pid of the process, which is only accessible after the object has been finalized.
|
||||
@since 1.24
|
||||
]]
|
||||
get { }
|
||||
values {
|
||||
pid: int; [[The pid, or 0 on failure.]]
|
||||
}
|
||||
}
|
||||
@property env {
|
||||
[[If $env is $NULL then the process created by this object is
|
||||
going to inherit the environment of this process.
|
||||
|
|
|
@ -493,6 +493,20 @@ _edje_part_textblock_style_text_set(Edje *ed,
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static char*
|
||||
strrstr(const char* haystack, const char* violate)
|
||||
{
|
||||
char *s_ret = NULL;
|
||||
char *tmp = NULL;
|
||||
const char *_haystack = haystack;
|
||||
size_t len = strlen(violate);
|
||||
while((tmp = strstr(_haystack, violate))){
|
||||
s_ret = tmp;
|
||||
_haystack = tmp + len;
|
||||
}
|
||||
return s_ret;
|
||||
}
|
||||
|
||||
void
|
||||
_edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||
Edje *ed,
|
||||
|
@ -522,11 +536,21 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
|||
size_t size_array_len = 0;
|
||||
Eina_List *l;
|
||||
unsigned int *value;
|
||||
Evas_Textblock_Style *st = _edje_textblock_style_get(ed, chosen_desc->text.style.str);
|
||||
const char *text_style = evas_textblock_style_get(st);
|
||||
char *s_font_size = (text_style) ? strrstr(text_style,"font_size=") : NULL;
|
||||
if (s_font_size)
|
||||
{
|
||||
int font_size = strtol(&s_font_size[10], NULL, 10);
|
||||
chosen_desc->text.size_range_max = font_size;
|
||||
if (chosen_desc->text.size_range_min > chosen_desc->text.size_range_max)
|
||||
chosen_desc->text.size_range_min = chosen_desc->text.size_range_max;
|
||||
}
|
||||
EINA_LIST_FOREACH(chosen_desc->text.fit_size_array, l, value)
|
||||
{
|
||||
size_array[size_array_len++] = *value;
|
||||
}
|
||||
unsigned int mode = TEXTBLOCK_FIT_MODE_NONE;
|
||||
unsigned int mode = TEXTBLOCK_FIT_MODE_NONE;
|
||||
|
||||
if (chosen_desc->text.fit_x)
|
||||
mode |= TEXTBLOCK_FIT_MODE_WIDTH;
|
||||
|
|
|
@ -326,6 +326,7 @@ edje_language_set(const char *locale)
|
|||
char *loc;
|
||||
int length;
|
||||
|
||||
if (!locale) return;
|
||||
lookup = strstr(locale, ".");
|
||||
length = lookup ? lookup - locale : (int)strlen(locale);
|
||||
loc = alloca(length + 1);
|
||||
|
|
|
@ -52,6 +52,7 @@ extern "C" {
|
|||
#define EFL_VERSION_1_21 1
|
||||
#define EFL_VERSION_1_22 1
|
||||
#define EFL_VERSION_1_23 1
|
||||
#define EFL_VERSION_1_24 1
|
||||
|
||||
/* Add here all the required ifdef for any @protected method */
|
||||
#ifdef EFL_BUILD
|
||||
|
@ -252,7 +253,7 @@ efl_config_bool_get(const Efl_Config *obj, const char * name)
|
|||
{
|
||||
Eina_Value *v = efl_config_get(obj, name);
|
||||
Eina_Bool b = 0;
|
||||
if (eina_value_type_get(v) == EINA_VALUE_TYPE_UCHAR)
|
||||
if (v && eina_value_type_get(v) == EINA_VALUE_TYPE_UCHAR)
|
||||
eina_value_get(v, &b);
|
||||
eina_value_free(v);
|
||||
return b;
|
||||
|
@ -274,7 +275,7 @@ efl_config_int_get(const Efl_Config *obj, const char * name)
|
|||
{
|
||||
Eina_Value *v = efl_config_get(obj, name);
|
||||
int b = 0;
|
||||
if (eina_value_type_get(v) == EINA_VALUE_TYPE_INT)
|
||||
if (v && eina_value_type_get(v) == EINA_VALUE_TYPE_INT)
|
||||
eina_value_get(v, &b);
|
||||
eina_value_free(v);
|
||||
return b;
|
||||
|
@ -296,7 +297,7 @@ efl_config_double_get(const Efl_Config *obj, const char * name)
|
|||
{
|
||||
Eina_Value *v = efl_config_get(obj, name);
|
||||
double b = 0;
|
||||
if (eina_value_type_get(v) == EINA_VALUE_TYPE_DOUBLE)
|
||||
if (v && eina_value_type_get(v) == EINA_VALUE_TYPE_DOUBLE)
|
||||
eina_value_get(v, &b);
|
||||
eina_value_free(v);
|
||||
return b;
|
||||
|
@ -318,7 +319,7 @@ efl_config_string_get(const Efl_Config *obj, const char *name)
|
|||
{
|
||||
Eina_Value *v = efl_config_get(obj, name);
|
||||
Eina_Stringshare *s = 0;
|
||||
if (eina_value_type_get(v) == EINA_VALUE_TYPE_STRING)
|
||||
if (v && eina_value_type_get(v) == EINA_VALUE_TYPE_STRING)
|
||||
{
|
||||
const char *b = 0;
|
||||
eina_value_get(v, &b);
|
||||
|
|
|
@ -1,24 +1,49 @@
|
|||
#ifdef EFL_BETA_API_SUPPORT
|
||||
|
||||
#ifndef EFL_WL_H
|
||||
# define EFL_WL_H
|
||||
#ifndef EFL_CANVAS_WL_H
|
||||
# define EFL_CANVAS_WL_H
|
||||
#include <Evas.h>
|
||||
#include <Ecore.h>
|
||||
#include <Efl_Core.h>
|
||||
|
||||
#ifdef EAPI
|
||||
# undef EAPI
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
# if __GNUC__ >= 4
|
||||
# define EAPI __attribute__ ((visibility("default")))
|
||||
# else
|
||||
# define EAPI
|
||||
# endif
|
||||
#else
|
||||
# define EAPI
|
||||
#ifdef EAPI_WEAK
|
||||
# undef EAPI_WEAK
|
||||
#endif
|
||||
|
||||
# ifdef __GNUC__
|
||||
# if __GNUC__ >= 4
|
||||
# define EAPI __attribute__ ((visibility("default")))
|
||||
# define EAPI_WEAK
|
||||
# else
|
||||
# define EAPI
|
||||
# define EAPI_WEAK
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#define EWAPI EAPI EAPI_WEAK
|
||||
|
||||
#ifdef WAYLAND_UTIL_H
|
||||
typedef struct wl_surface Efl_Canvas_Wl_Wl_Surface;
|
||||
typedef struct wl_global Efl_Canvas_Wl_Wl_Global;
|
||||
typedef struct wl_interface Efl_Canvas_Wl_Wl_Interface;
|
||||
typedef struct wl_array Efl_Canvas_Wl_Wl_Array;
|
||||
typedef void Efl_Canvas_Wl_Wl_Interface_Data;
|
||||
typedef void Efl_Canvas_Wl_Wl_Interface_Bind_Cb;
|
||||
#else
|
||||
typedef struct Efl_Canvas_Wl_Wl_Surface Efl_Canvas_Wl_Wl_Surface;
|
||||
typedef struct Efl_Canvas_Wl_Wl_Global Efl_Canvas_Wl_Wl_Global;
|
||||
typedef struct Efl_Canvas_Wl_Wl_Interface Efl_Canvas_Wl_Wl_Interface;
|
||||
typedef struct Efl_Canvas_Wl_Wl_Array Efl_Canvas_Wl_Wl_Array;
|
||||
typedef void * Efl_Canvas_Wl_Wl_Interface_Data;
|
||||
typedef void * Efl_Canvas_Wl_Wl_Interface_Bind_Cb;
|
||||
#endif
|
||||
#ifdef _XKBCOMMON_H_
|
||||
typedef struct xkb_state Efl_Canvas_Wl_Xkb_State;
|
||||
#else
|
||||
typedef struct Efl_Canvas_Wl_Xkb_State Efl_Canvas_Wl_Xkb_State;
|
||||
#endif
|
||||
#include <efl_canvas_wl_surface.eo.h>
|
||||
#include <efl_canvas_wl.eo.h>
|
||||
/**
|
||||
* @defgroup Efl_Wl_Group EFL Wayland
|
||||
*
|
||||
|
@ -27,19 +52,7 @@
|
|||
* @since 1.20
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef Efl_Wl_Rotation
|
||||
* The rotation to apply to the compositor's internal wl_output
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
EFL_WL_ROTATION_0,
|
||||
EFL_WL_ROTATION_90,
|
||||
EFL_WL_ROTATION_180,
|
||||
EFL_WL_ROTATION_270
|
||||
} Efl_Wl_Rotation;
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* Add a compositor widget to the given canvas.
|
||||
*
|
||||
|
@ -52,7 +65,7 @@ typedef enum
|
|||
* @param e The canvas
|
||||
* @return The compositor object, @c NULL on failure
|
||||
*/
|
||||
EAPI Evas_Object *efl_wl_add(Evas *e);
|
||||
EAPI Evas_Object *efl_canvas_wl_add(Evas *e);
|
||||
|
||||
/**
|
||||
* Run a command in the compositor widget.
|
||||
|
@ -64,7 +77,7 @@ EAPI Evas_Object *efl_wl_add(Evas *e);
|
|||
* @param cmd The command to run
|
||||
* @return The Ecore_Exe from the executed process, @c NULL on failure
|
||||
*/
|
||||
EAPI Ecore_Exe *efl_wl_run(Evas_Object *obj, const char *cmd);
|
||||
EAPI Ecore_Exe *efl_canvas_wl_run(Evas_Object *obj, const char *cmd);
|
||||
|
||||
/**
|
||||
* Run a command in the compositor widget with specified flags.
|
||||
|
@ -77,7 +90,7 @@ EAPI Ecore_Exe *efl_wl_run(Evas_Object *obj, const char *cmd);
|
|||
* @param flags The flags to use
|
||||
* @return The Ecore_Exe from the executed process, @c NULL on failure
|
||||
*/
|
||||
Ecore_Exe *efl_wl_flags_run(Evas_Object *obj, const char *cmd, Ecore_Exe_Flags flags);
|
||||
Ecore_Exe *efl_canvas_wl_flags_run(Evas_Object *obj, const char *cmd, Ecore_Exe_Flags flags);
|
||||
|
||||
/**
|
||||
* Add a process to the list of allowed clients for the compositor widget
|
||||
|
@ -86,7 +99,7 @@ Ecore_Exe *efl_wl_flags_run(Evas_Object *obj, const char *cmd, Ecore_Exe_Flags f
|
|||
* @param pid The process to allow
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void efl_wl_pid_add(Evas_Object *obj, int32_t pid);
|
||||
EAPI void efl_canvas_wl_pid_add(Evas_Object *obj, int32_t pid);
|
||||
|
||||
/**
|
||||
* Remove a process from the list of allowed clients for the compositor widget
|
||||
|
@ -95,7 +108,7 @@ EAPI void efl_wl_pid_add(Evas_Object *obj, int32_t pid);
|
|||
* @param pid The process to deny
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void efl_wl_pid_del(Evas_Object *obj, int32_t pid);
|
||||
EAPI void efl_canvas_wl_pid_del(Evas_Object *obj, int32_t pid);
|
||||
|
||||
/**
|
||||
* Put the bottom-most toplevel window on top and apply focus to it
|
||||
|
@ -103,7 +116,7 @@ EAPI void efl_wl_pid_del(Evas_Object *obj, int32_t pid);
|
|||
* @param obj The compositor widget
|
||||
* @return EINA_TRUE if the window stacking was changed
|
||||
*/
|
||||
EAPI Eina_Bool efl_wl_next(Evas_Object *obj);
|
||||
EAPI Eina_Bool efl_canvas_wl_surface_next(Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* Put the second top-most toplevel window on top and apply focus to it
|
||||
|
@ -111,7 +124,7 @@ EAPI Eina_Bool efl_wl_next(Evas_Object *obj);
|
|||
* @param obj The compositor widget
|
||||
* @return EINA_TRUE if the window stacking was changed
|
||||
*/
|
||||
EAPI Eina_Bool efl_wl_prev(Evas_Object *obj);
|
||||
EAPI Eina_Bool efl_canvas_wl_surface_prev(Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* Set rotation and flip for the compositor's output
|
||||
|
@ -122,7 +135,7 @@ EAPI Eina_Bool efl_wl_prev(Evas_Object *obj);
|
|||
* @note rtl is equivalent to WL_OUTPUT_TRANSFORM_FLIPPED and rotations are applied
|
||||
* on top
|
||||
*/
|
||||
EAPI void efl_wl_rotate(Evas_Object *obj, Efl_Wl_Rotation rot, Eina_Bool rtl);
|
||||
EAPI void efl_canvas_wl_rotate(Evas_Object *obj, Efl_Wl_Rotation rot, Eina_Bool rtl);
|
||||
|
||||
/**
|
||||
* Set the scale factor for the compositor's output
|
||||
|
@ -130,25 +143,25 @@ EAPI void efl_wl_rotate(Evas_Object *obj, Efl_Wl_Rotation rot, Eina_Bool rtl);
|
|||
* @param obj The compositor widget
|
||||
* @param scale The scale factor to set
|
||||
*/
|
||||
EAPI void efl_wl_scale_set(Evas_Object *obj, double scale);
|
||||
EAPI void efl_canvas_wl_scale_set(Evas_Object *obj, double scale);
|
||||
|
||||
/**
|
||||
* Transfer aspect hints from top-most surface onto the efl_wl object
|
||||
* Transfer aspect hints from top-most surface onto the efl_canvas_wl object
|
||||
*
|
||||
* @param obj The compositor widget
|
||||
* @param set Whether to enable aspect setting
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void efl_wl_aspect_set(Evas_Object *obj, Eina_Bool set);
|
||||
EAPI void efl_canvas_wl_aspect_set(Evas_Object *obj, Eina_Bool set);
|
||||
|
||||
/**
|
||||
* Transfer min/max hints from top-most surface onto the efl_wl object
|
||||
* Transfer min/max hints from top-most surface onto the efl_canvas_wl object
|
||||
*
|
||||
* @param obj The compositor widget
|
||||
* @param set Whether to enable min/max setting
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void efl_wl_minmax_set(Evas_Object *obj, Eina_Bool set);
|
||||
EAPI void efl_canvas_wl_minmax_set(Evas_Object *obj, Eina_Bool set);
|
||||
|
||||
/**
|
||||
* Add an externally-managed global to the compositor
|
||||
|
@ -164,7 +177,7 @@ EAPI void efl_wl_minmax_set(Evas_Object *obj, Eina_Bool set);
|
|||
* @return The created global (struct wl_global), or NULL on failure
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void *efl_wl_global_add(Evas_Object *obj, const void *interface, uint32_t version, void *data, void *bind_cb);
|
||||
EAPI void *efl_canvas_wl_global_add(Evas_Object *obj, const void *interface, uint32_t version, void *data, void *bind_cb);
|
||||
|
||||
/**
|
||||
* Extract a child surface from the compositor
|
||||
|
@ -176,7 +189,7 @@ EAPI void *efl_wl_global_add(Evas_Object *obj, const void *interface, uint32_t v
|
|||
* @return True if the surface was successfully extracted
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI Eina_Bool efl_wl_surface_extract(Evas_Object *surface);
|
||||
EAPI Eina_Bool efl_canvas_wl_surface_extract(Evas_Object *surface);
|
||||
|
||||
/**
|
||||
* Return the pid for the surface's client
|
||||
|
@ -187,19 +200,19 @@ EAPI Eina_Bool efl_wl_surface_extract(Evas_Object *surface);
|
|||
* @return The pid of the surface, or -1 on failure
|
||||
* @since 1.24
|
||||
*/
|
||||
EAPI int32_t efl_wl_surface_pid_get(Evas_Object *surface);
|
||||
|
||||
EAPI int32_t efl_canvas_wl_surface_pid_get(Evas_Object *surface);
|
||||
#endif
|
||||
/**
|
||||
* Get the Evas_Object for an extracted wl_surface resource created by an efl_wl object
|
||||
* Get the Evas_Object for an extracted wl_surface resource created by an efl_canvas_wl object
|
||||
*
|
||||
* @note Passing anything other than a valid wl_surface resource from an efl_wl object will guarantee a crash.
|
||||
* @note Passing anything other than a valid wl_surface resource from an efl_canvas_wl object will guarantee a crash.
|
||||
*
|
||||
* @param surface_resource The wl_resource for a wl_surface
|
||||
* @return The Evas_Object of the surface, NULL on failure
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI Evas_Object *efl_wl_extracted_surface_object_find(void *surface_resource);
|
||||
|
||||
EAPI Evas_Object *efl_canvas_wl_extracted_surface_object_find(void *surface_resource);
|
||||
#if 0
|
||||
/**
|
||||
* Get the Evas_Object for an extracted surface's parent, or NULL if the parent is not extracted
|
||||
*
|
||||
|
@ -209,7 +222,7 @@ EAPI Evas_Object *efl_wl_extracted_surface_object_find(void *surface_resource);
|
|||
* @return The Evas_Object of the parent surface, NULL on failure or if there is no parent
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI Evas_Object *efl_wl_extracted_surface_extracted_parent_get(Evas_Object *surface);
|
||||
EAPI Evas_Object *efl_canvas_wl_extracted_surface_extracted_parent_get(Evas_Object *surface);
|
||||
|
||||
/**
|
||||
* Set external xkbcommon resources to be used read-only by the compositor object
|
||||
|
@ -227,7 +240,7 @@ EAPI Evas_Object *efl_wl_extracted_surface_extracted_parent_get(Evas_Object *sur
|
|||
* @param wl_key_array A pointer to the wl_array in which keys are stored
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void efl_wl_seat_keymap_set(Evas_Object *obj, Eo *seat, void *state, char *str, void *wl_key_array);
|
||||
EAPI void efl_canvas_wl_seat_keymap_set(Evas_Object *obj, Eo *seat, void *state, char *str, void *wl_key_array);
|
||||
|
||||
/**
|
||||
* Set the key repeat rate for a seat in the compositor
|
||||
|
@ -235,7 +248,10 @@ EAPI void efl_wl_seat_keymap_set(Evas_Object *obj, Eo *seat, void *state, char *
|
|||
* @param obj The compositor widget
|
||||
* @since 1.21
|
||||
*/
|
||||
EAPI void efl_wl_seat_key_repeat_set(Evas_Object *obj, Eo *seat, int repeat_rate, int repeat_delay);
|
||||
EAPI void efl_canvas_wl_seat_key_repeat_set(Evas_Object *obj, Eo *seat, int repeat_rate, int repeat_delay);
|
||||
#endif
|
||||
|
||||
#undef EAPI
|
||||
#define EAPI
|
||||
#undef EAPI_WEAK
|
||||
#define EAPI_WEAK
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,123 @@
|
|||
import efl_exe;
|
||||
import efl_input_device;
|
||||
import efl_canvas_wl_surface;
|
||||
|
||||
struct @beta @extern Efl.Canvas.Wl_Wl_Surface; [[ struct wl_surface. @since 1.24 ]]
|
||||
struct @beta @extern Efl.Canvas.Wl_Wl_Global; [[ struct wl_global. @since 1.24 ]]
|
||||
struct @beta @extern Efl.Canvas.Wl_Wl_Interface; [[ A libwayland callback interface struct. @since 1.24 ]]
|
||||
struct @beta @extern Efl.Canvas.Wl_Wl_Interface_Data; [[ A data pointer to send with the bind callback. @since 1.24 ]]
|
||||
struct @beta @extern Efl.Canvas.Wl_Wl_Interface_Bind_Cb; [[ A callback with the type (*void)(struct wl_client *client, void *data, uint32_t version, uint32_t id). @since 1.24 ]]
|
||||
struct @beta @extern Efl.Canvas.Wl_Xkb_State; [[ struct xkb_state. @since 1.24 ]]
|
||||
struct @beta @extern Efl.Canvas.Wl_Wl_Array; [[ struct wl_array. @since 1.24 ]]
|
||||
|
||||
|
||||
enum @beta Efl.Canvas.Wl.Rotation
|
||||
{
|
||||
[[Orientation of the internal compositor object in degrees. These values are COUNTER-CLOCKWISE.
|
||||
]]
|
||||
rotate_0 = 0,
|
||||
rotate_90 = 1,
|
||||
rotate_180 = 2,
|
||||
rotate_270 = 3
|
||||
}
|
||||
|
||||
class @beta Efl.Canvas.Wl extends Efl.Canvas.Group
|
||||
{
|
||||
[[
|
||||
@since 1.24
|
||||
]]
|
||||
data: Comp;
|
||||
methods {
|
||||
run {
|
||||
[[This runs a command in the compositor using the @Efl.Exe_Flags.term_with_parent flag.
|
||||
]]
|
||||
params {
|
||||
cmd: string;
|
||||
}
|
||||
return: Efl.Exe;
|
||||
}
|
||||
@property exec_flags {
|
||||
values {
|
||||
flags: Efl.Exe_Flags;
|
||||
}
|
||||
}
|
||||
allowed_pid_add {
|
||||
params {
|
||||
pid: int;
|
||||
}
|
||||
}
|
||||
allowed_pid_del {
|
||||
params {
|
||||
pid: int;
|
||||
}
|
||||
}
|
||||
surface_next {
|
||||
return: Efl.Canvas.Wl.Surface;
|
||||
}
|
||||
surface_prev {
|
||||
return: Efl.Canvas.Wl.Surface;
|
||||
}
|
||||
@property active_surface {
|
||||
get {}
|
||||
set {
|
||||
return: bool;
|
||||
}
|
||||
values {
|
||||
surface: Efl.Canvas.Wl.Surface;
|
||||
}
|
||||
}
|
||||
@property aspect {
|
||||
values {
|
||||
set: bool;
|
||||
}
|
||||
}
|
||||
@property minmax {
|
||||
values {
|
||||
set: bool;
|
||||
}
|
||||
}
|
||||
@property rotation {
|
||||
values {
|
||||
rotation: Efl.Canvas.Wl.Rotation;
|
||||
rtl: bool;
|
||||
}
|
||||
}
|
||||
global_add {
|
||||
params {
|
||||
interface: const(Efl.Canvas.Wl_Wl_Interface) @by_ref;
|
||||
version: uint;
|
||||
data: Efl.Canvas.Wl_Wl_Interface_Data @by_ref;
|
||||
bind_cb: Efl.Canvas.Wl_Wl_Interface_Bind_Cb @by_ref;
|
||||
}
|
||||
return: Efl.Canvas.Wl_Wl_Global @by_ref;
|
||||
}
|
||||
seat_keymap_set {
|
||||
params {
|
||||
seat: Efl.Input.Device;
|
||||
state: Efl.Canvas.Wl_Xkb_State @by_ref;
|
||||
keymap_str: string;
|
||||
key_array: Efl.Canvas.Wl_Wl_Array @by_ref;
|
||||
}
|
||||
}
|
||||
seat_key_repeat_set {
|
||||
params {
|
||||
seat: Efl.Input.Device;
|
||||
repeat_rate: int;
|
||||
repeat_delay: int;
|
||||
}
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Gfx.Entity.visible { set; }
|
||||
Efl.Gfx.Entity.size { set; }
|
||||
Efl.Gfx.Entity.position { set; }
|
||||
Efl.Gfx.Entity.scale { get; set; }
|
||||
}
|
||||
events {
|
||||
toplevel,added: Efl.Canvas.Wl.Surface; [[]]
|
||||
child,added: Efl.Canvas.Wl.Surface; [[]]
|
||||
popup,added: Efl.Canvas.Wl.Surface; [[]]
|
||||
seat,added: Efl.Input.Device; [[The seat object added.]]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
class @beta Efl.Canvas.Wl.Surface extends Efl.Canvas.Group
|
||||
{
|
||||
[[@since 1.24]]
|
||||
data: Comp_Surface;
|
||||
methods {
|
||||
extract {
|
||||
return: bool;
|
||||
}
|
||||
@property pid {
|
||||
get {}
|
||||
values {
|
||||
pid: int;
|
||||
}
|
||||
}
|
||||
@property parent_surface {
|
||||
get {}
|
||||
values {
|
||||
parent: Efl.Canvas.Wl.Surface;
|
||||
}
|
||||
}
|
||||
@property extracted {
|
||||
get {}
|
||||
values {
|
||||
extracted: bool;
|
||||
}
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Gfx.Entity.visible { set; }
|
||||
Efl.Gfx.Entity.size { set; }
|
||||
Efl.Gfx.Entity.position { set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
efl_canvas_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, eina]
|
||||
efl_canvas_wl_pub_deps = [eo, efl, evas, dependency('wayland-server', version : '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0')]
|
||||
|
||||
if (get_option('x11'))
|
||||
efl_canvas_wl_deps += [ecore_x]
|
||||
efl_canvas_wl_pub_deps += [dependency('xkbcommon-x11')]
|
||||
endif
|
||||
|
||||
pub_eo_files = [
|
||||
'efl_canvas_wl.eo',
|
||||
'efl_canvas_wl_surface.eo',
|
||||
]
|
||||
|
||||
foreach eo_file : pub_eo_files
|
||||
pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
|
||||
input : eo_file,
|
||||
output : [eo_file + '.h'],
|
||||
depfile : eo_file + '.d',
|
||||
install : true,
|
||||
install_dir : dir_package_include,
|
||||
command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
|
||||
'-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'),
|
||||
'-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
|
||||
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
|
||||
'-gchd', '@INPUT@'])
|
||||
endforeach
|
||||
|
||||
efl_canvas_wl_src = [
|
||||
'dmabuf.c',
|
||||
'efl_canvas_wl.c',
|
||||
]
|
||||
efl_canvas_wl_header_src = ['Efl_Canvas_Wl.h']
|
||||
eolian_include_directories += ['-I', meson.current_source_dir()]
|
||||
|
||||
efl_canvas_wl_lib = library('efl_canvas_wl',
|
||||
efl_canvas_wl_src, pub_eo_file_target,
|
||||
dependencies: [m, dl] + efl_canvas_wl_deps + efl_canvas_wl_pub_deps,
|
||||
include_directories : config_dir + [include_directories(join_paths('..','..'))],
|
||||
install: true,
|
||||
c_args : package_c_args,
|
||||
version : meson.project_version()
|
||||
)
|
||||
|
||||
efl_canvas_wl = declare_dependency(
|
||||
include_directories: [include_directories('.')],
|
||||
link_with: efl_canvas_wl_lib,
|
||||
sources: pub_eo_file_target,
|
||||
dependencies: efl_canvas_wl_pub_deps,
|
||||
)
|
||||
|
||||
install_headers(efl_canvas_wl_header_src,
|
||||
install_dir : dir_package_include,
|
||||
)
|
||||
|
||||
eolian_efl_canvas_wl_dir = join_paths(eolian_include_dir, package_version_name)
|
||||
if get_option('install-eo-files')
|
||||
install_data(pub_eo_files,
|
||||
install_dir: eolian_efl_canvas_wl_dir
|
||||
)
|
||||
endif
|
|
@ -1,32 +0,0 @@
|
|||
efl_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, eo, efl, eina]
|
||||
efl_wl_pub_deps = [evas, dependency('wayland-server', version : '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0')]
|
||||
|
||||
if (get_option('x11'))
|
||||
efl_wl_deps += [ecore_x]
|
||||
efl_wl_pub_deps += [dependency('xkbcommon-x11')]
|
||||
endif
|
||||
|
||||
efl_wl_src = [
|
||||
'dmabuf.c',
|
||||
'efl_wl.c'
|
||||
]
|
||||
efl_wl_header_src = ['Efl_Wl.h']
|
||||
|
||||
|
||||
efl_wl_lib = library('efl_wl',
|
||||
efl_wl_src,
|
||||
dependencies: [m, dl] + efl_wl_deps + efl_wl_pub_deps,
|
||||
include_directories : config_dir + [include_directories(join_paths('..','..'))],
|
||||
install: true,
|
||||
version : meson.project_version()
|
||||
)
|
||||
|
||||
efl_wl = declare_dependency(
|
||||
include_directories: [include_directories('.')],
|
||||
link_with: efl_wl_lib,
|
||||
dependencies: efl_wl_pub_deps,
|
||||
)
|
||||
|
||||
install_headers(efl_wl_header_src,
|
||||
install_dir : dir_package_include,
|
||||
)
|
|
@ -140,8 +140,11 @@ eina_content_new(Eina_Slice data, const char *type)
|
|||
return content;
|
||||
|
||||
err:
|
||||
free(content->data.mem);
|
||||
content->data.mem = NULL;
|
||||
if (content->data.mem)
|
||||
{
|
||||
free(content->data.mem);
|
||||
content->data.mem = NULL;
|
||||
}
|
||||
free(content);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ static int _abort_level_on_critical = EINA_LOG_LEVEL_CRITICAL;
|
|||
# ifndef EINA_LOG_BACKTRACE_ENABLE
|
||||
static int _backtrace_level = -1;
|
||||
# else
|
||||
static int _backtrace_level = 1;
|
||||
static int _backtrace_level = EINA_LOG_LEVEL_ERR;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -3256,7 +3256,7 @@ static inline Eina_Bool eina_value_struct_setup(Eina_Value *value,
|
|||
*
|
||||
* @param[in] value Value object
|
||||
* @return structure description, with all members and size.
|
||||
* on failure, #NULL is returned.
|
||||
* on failure, @c NULL is returned.
|
||||
*
|
||||
* @since 1.21
|
||||
*/
|
||||
|
@ -3706,7 +3706,7 @@ EAPI const char *eina_value_type_name_get(const Eina_Value_Type *type) EINA_PURE
|
|||
* @param[in] type Type reference.
|
||||
* @return #EINA_TRUE if valid, #EINA_FALSE otherwise.
|
||||
*
|
||||
* A type is invalid if it's NULL or if version field is not the same
|
||||
* A type is invalid if it's @c NULL or if version field is not the same
|
||||
* as runtime #EINA_VALUE_TYPE_VERSION.
|
||||
*
|
||||
* @since 1.2
|
||||
|
|
|
@ -357,6 +357,7 @@ unwind = dependency('libunwind-generic', required: false)
|
|||
if unwind.found()
|
||||
config_h.set('HAVE_UNWIND', 1)
|
||||
eina_deps += unwind
|
||||
config_h.set('EINA_LOG_BACKTRACE_ENABLE', 1)
|
||||
endif
|
||||
|
||||
#for the case that the iconv library is not part of libc but rather libiconv or smth. like that
|
||||
|
|
|
@ -576,6 +576,7 @@ _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
|
|||
Eina_Error theme_apply_ret, theme_apply_internal_ret;
|
||||
Elm_Widget_Smart_Data *wd = NULL;
|
||||
char buf[64];
|
||||
Eina_Bool legacy;
|
||||
static unsigned int version = 0;
|
||||
|
||||
sd->needs_theme_apply = EINA_FALSE;
|
||||
|
@ -591,9 +592,10 @@ _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
|
|||
(theme_apply_internal_ret == EFL_UI_THEME_APPLY_ERROR_DEFAULT))
|
||||
return EFL_UI_THEME_APPLY_ERROR_DEFAULT;
|
||||
|
||||
legacy = elm_widget_is_legacy(obj);
|
||||
/* unset existing size hints to force accurate recalc */
|
||||
efl_gfx_hint_size_restricted_min_set(obj, EINA_SIZE2D(0, 0));
|
||||
if (elm_widget_is_legacy(obj))
|
||||
if (legacy)
|
||||
efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(0, 0));
|
||||
else
|
||||
{
|
||||
|
@ -623,6 +625,7 @@ _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
|
|||
}
|
||||
if (sd->deferred_signals)
|
||||
_deferred_signals_emit(sd);
|
||||
if (legacy) return EFL_UI_THEME_APPLY_ERROR_NONE;
|
||||
|
||||
if (!version)
|
||||
{
|
||||
|
|
|
@ -3233,6 +3233,148 @@ _efl_ui_textbox_item_factory_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data
|
|||
return pd->item_factory;
|
||||
}
|
||||
|
||||
/*Efl.Ui.Scrollable*/
|
||||
EOLIAN static Eina_Size2D
|
||||
_efl_ui_textbox_efl_ui_scrollable_content_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_SIZE2D(0, 0));
|
||||
return efl_ui_scrollable_content_size_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Rect
|
||||
_efl_ui_textbox_efl_ui_scrollable_viewport_geometry_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_RECT_EMPTY());
|
||||
return efl_ui_scrollable_viewport_geometry_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_match_content_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool w, Eina_Bool h)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
return efl_ui_scrollable_match_content_set(sd->scroller, !!w, !!h);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_step_size_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Position2D step)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_step_size_set(sd->scroller, step);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Position2D
|
||||
_efl_ui_textbox_efl_ui_scrollable_step_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_POSITION2D(0, 0));
|
||||
return efl_ui_scrollable_step_size_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Position2D
|
||||
_efl_ui_textbox_efl_ui_scrollable_content_pos_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_POSITION2D(0, 0));
|
||||
return efl_ui_scrollable_content_pos_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_content_pos_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Position2D pos)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_content_pos_set(sd->scroller, pos);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_textbox_efl_ui_scrollable_scroll_hold_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_FALSE);
|
||||
return efl_ui_scrollable_scroll_hold_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_scroll_hold_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool hold)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_scroll_hold_set(sd->scroller, !!hold);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_textbox_efl_ui_scrollable_scroll_freeze_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EINA_FALSE);
|
||||
return efl_ui_scrollable_scroll_freeze_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_scroll_freeze_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool freeze)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_scroll_freeze_set(sd->scroller, !!freeze);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_bounce_enabled_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool horiz, Eina_Bool vert)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_bounce_enabled_set(sd->scroller, !!horiz, !!vert);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_bounce_enabled_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool *horiz, Eina_Bool *vert)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_bounce_enabled_get(sd->scroller, horiz, vert);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_scroll(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Rect rect, Eina_Bool animation)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_scroll(sd->scroller, rect, animation);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_gravity_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, double *x, double *y)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_gravity_get(sd->scroller, x, y);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_gravity_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, double x, double y)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_gravity_set(sd->scroller, x, y);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_movement_block_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Efl_Ui_Layout_Orientation block)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_movement_block_set(sd->scroller, block);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Layout_Orientation
|
||||
_efl_ui_textbox_efl_ui_scrollable_movement_block_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd->scroller, EFL_UI_LAYOUT_ORIENTATION_DEFAULT);
|
||||
return efl_ui_scrollable_movement_block_get(sd->scroller);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_looping_set(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool loop_h, Eina_Bool loop_v)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_looping_set(sd->scroller, !!loop_h, !!loop_v);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_textbox_efl_ui_scrollable_looping_get(const Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *sd, Eina_Bool *loop_h, Eina_Bool *loop_v)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(sd->scroller);
|
||||
efl_ui_scrollable_looping_get(sd->scroller, loop_h, loop_v);
|
||||
}
|
||||
|
||||
/* Efl.Part begin */
|
||||
|
||||
static Eina_Bool
|
||||
|
|
|
@ -11,7 +11,7 @@ enum @beta Efl.Ui.Textbox_Cnp_Content {
|
|||
}
|
||||
|
||||
class @beta Efl.Ui.Textbox extends Efl.Ui.Layout_Base implements Efl.Input.Clickable,
|
||||
Efl.Access.Text, Efl.Access.Editable.Text
|
||||
Efl.Access.Text, Efl.Access.Editable.Text, Efl.Ui.Scrollable
|
||||
composites
|
||||
Efl.Text_Interactive, Efl.Text_Markup, Efl.Input_Text
|
||||
{
|
||||
|
@ -24,7 +24,11 @@ class @beta Efl.Ui.Textbox extends Efl.Ui.Layout_Base implements Efl.Input.Click
|
|||
[[Enable or disable scrolling in the widget.
|
||||
|
||||
When scrolling is enabled scrollbars will appear if the text does
|
||||
not fit the widget size.]]
|
||||
not fit the widget size.
|
||||
|
||||
Direct control of the scroll through the @Efl.Ui.Scrollable interface
|
||||
is only possible when this property is enabled.
|
||||
]]
|
||||
set {}
|
||||
get {}
|
||||
values {
|
||||
|
@ -133,6 +137,18 @@ class @beta Efl.Ui.Textbox extends Efl.Ui.Layout_Base implements Efl.Input.Click
|
|||
Efl.Access.Editable.Text.paste;
|
||||
Efl.Text_Interactive.editable { set; }
|
||||
Efl.Part.part_get;
|
||||
Efl.Ui.Scrollable.content_pos { set; get; }
|
||||
Efl.Ui.Scrollable.content_size{ get; }
|
||||
Efl.Ui.Scrollable.viewport_geometry{ get; }
|
||||
Efl.Ui.Scrollable.bounce_enabled { set; get; }
|
||||
Efl.Ui.Scrollable.scroll_freeze { get; set; }
|
||||
Efl.Ui.Scrollable.scroll_hold { get; set; }
|
||||
Efl.Ui.Scrollable.looping { get; set; }
|
||||
Efl.Ui.Scrollable.movement_block { get; set; }
|
||||
Efl.Ui.Scrollable.gravity { get; set; }
|
||||
Efl.Ui.Scrollable.match_content { set; }
|
||||
Efl.Ui.Scrollable.step_size { set; get; }
|
||||
Efl.Ui.Scrollable.scroll;
|
||||
}
|
||||
events {
|
||||
selection,paste: void; [[Called when selection is pasted.]]
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* It can act like a circular list with round mode and labels can be
|
||||
* reduced for a defined length for side items.
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base @ref
|
||||
* Scroller widget also work for diskselectors.
|
||||
*
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
* This widget inherits from the @ref Elm_Layout one, so that all the
|
||||
* functions acting on it also work for entry objects (since 1.8).
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base
|
||||
* @ref Elm_Scroller widget also work for entries (since 1.8).
|
||||
*
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
* This widget inherits from the @ref Layout one, so that all the
|
||||
* functions acting on it also work for gengrid objects.
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base @ref
|
||||
* Scroller widget also work for gengrids.
|
||||
*
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
* This widget inherits from the @ref Layout one, so that all the
|
||||
* functions acting on it also work for genlist objects.
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base @ref
|
||||
* Scroller widget also work for genlists.
|
||||
*
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
* @li @ref elm_object_item_del
|
||||
* @li @ref elm_object_item_signal_emit
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base @ref
|
||||
* Scroller widget also work for lists.
|
||||
*
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
* @li group of markers and
|
||||
* @li routes.
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base @ref
|
||||
* Scroller widget also work for map objects.
|
||||
*
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
* @li @c "focused" - When the photocam has received focus. (since 1.8)
|
||||
* @li @c "unfocused" - When the photocam has lost focus. (since 1.8)
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base @ref
|
||||
* Scroller widget also work for photocam objects.
|
||||
*
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
*
|
||||
* Items can have multiple states, or show menus when selected by the user.
|
||||
*
|
||||
* This widget implements the @b @ref elm-scrollable-interface
|
||||
* This widget implements the @ref elm-scrollable-interface
|
||||
* interface, so that all (non-deprecated) functions for the base
|
||||
* @ref Scroller widget also work for toolbars (since 1.8)
|
||||
*
|
||||
|
|
|
@ -402,7 +402,7 @@ evas_vg_shape_append_squadratic_to(Eo *obj, double x, double y)
|
|||
EAPI void
|
||||
evas_vg_shape_append_cubic_to(Eo *obj, double x, double y, double ctrl_x0, double ctrl_y0, double ctrl_x1, double ctrl_y1)
|
||||
{
|
||||
efl_gfx_path_append_cubic_to(obj, x, y, ctrl_x0, ctrl_y0, ctrl_x1, ctrl_y1);
|
||||
efl_gfx_path_append_cubic_to(obj, ctrl_x0, ctrl_y0, ctrl_x1, ctrl_y1, x, y);
|
||||
efl_canvas_vg_node_change(obj);
|
||||
}
|
||||
|
||||
|
|
|
@ -808,7 +808,7 @@ EOAPI int evas_canvas_coord_world_x_to_screen(const Eo *obj, int x) EINA_WARN_UN
|
|||
* @param[in] obj The object.
|
||||
*
|
||||
* @return A newly allocated list of updated rectangles of the canvas
|
||||
* (@Eina.Rect structs). Free this list with @ref evas_render_updates_free.
|
||||
* (@ref Eina_Rect structs). Free this list with @ref evas_render_updates_free.
|
||||
*
|
||||
* @ingroup Evas_Canvas
|
||||
*/
|
||||
|
|
|
@ -445,7 +445,9 @@ _evas_box_efl_gfx_entity_position_set(Eo *o, Evas_Object_Box_Data *_pd EINA_UNUS
|
|||
if (_evas_object_intercept_call(o, EVAS_OBJECT_INTERCEPT_CB_MOVE , 0, pos.x, pos.y))
|
||||
return;
|
||||
|
||||
efl_gfx_entity_position_set(cso->clipper, pos);
|
||||
if (!evas_object_static_clip_get(cso->clipper))
|
||||
efl_gfx_entity_position_set(cso->clipper, pos);
|
||||
|
||||
/* this skips the call to _evas_object_smart_clipped_smart_move_internal
|
||||
* since box internals will automatically recalc all the child positions
|
||||
* at a later point
|
||||
|
|
|
@ -557,24 +557,24 @@ static void evas_object_textblock_render(Evas_Object *eo_obj,
|
|||
int x, int y, Eina_Bool do_async);
|
||||
static void evas_object_textblock_free(Evas_Object *eo_obj);
|
||||
static void evas_object_textblock_render_pre(Evas_Object *eo_obj,
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
static void evas_object_textblock_render_post(Evas_Object *eo_obj,
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
static Evas_Object_Textblock_Node_Text *_evas_textblock_node_text_new(void);
|
||||
|
||||
static void *evas_object_textblock_engine_data_get(Evas_Object *eo_obj);
|
||||
|
||||
static int evas_object_textblock_is_opaque(Evas_Object *eo_obj,
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
static int evas_object_textblock_was_opaque(Evas_Object *eo_obj,
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
static void evas_object_textblock_coords_recalc(Evas_Object *eo_obj,
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data);
|
||||
static void _canvas_text_format_changed(Eo *eo_obj, Efl_Canvas_Textblock_Data *o);
|
||||
|
||||
static const Evas_Object_Func object_func =
|
||||
|
@ -6350,7 +6350,7 @@ _layout_handle_ellipsis(Ctxt *c, Evas_Object_Textblock_Item *it, Eina_List *i)
|
|||
/* Don't do much for the meanwhile. */
|
||||
static inline void
|
||||
_layout_paragraph_render(Efl_Canvas_Textblock_Data *o,
|
||||
Evas_Object_Textblock_Paragraph *par)
|
||||
Evas_Object_Textblock_Paragraph *par)
|
||||
{
|
||||
if (par->rendered)
|
||||
return;
|
||||
|
@ -14504,7 +14504,7 @@ evas_object_textblock_init(Evas_Object *eo_obj)
|
|||
linebreak_init = EINA_TRUE;
|
||||
init_linebreak();
|
||||
init_wordbreak();
|
||||
init_graphemebreak();
|
||||
init_graphemebreak();
|
||||
}
|
||||
|
||||
o = obj->private_data;
|
||||
|
@ -15762,8 +15762,8 @@ evas_object_textblock_coords_recalc(Evas_Object *eo_obj,
|
|||
|
||||
static void
|
||||
evas_object_textblock_render_pre(Evas_Object *eo_obj,
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data)
|
||||
Evas_Object_Protected_Data *obj,
|
||||
void *type_private_data)
|
||||
{
|
||||
Efl_Canvas_Textblock_Data *o = type_private_data;
|
||||
ASYNC_BLOCK;
|
||||
|
|
|
@ -379,6 +379,9 @@ _evas_proxy_redraw_set(Evas_Public_Data *e, Evas_Object_Protected_Data *obj,
|
|||
|
||||
if (render)
|
||||
{
|
||||
/* Not good... but make it sure if the proxies have missed at update
|
||||
if its sources are remained changed as pending objects in the prev frame. */
|
||||
evas_object_change(eo_proxy, proxy);
|
||||
proxy->func->render_pre(eo_proxy, proxy, proxy->private_data);
|
||||
_evas_render_prev_cur_clip_cache_add(e, proxy);
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
as possible.
|
||||
|
||||
Note: Lua has been used since 1.10. The previous filters syntax is not
|
||||
garanteed to be compatible with 1.10 and newer versions.
|
||||
guaranteed to be compatible with 1.10 and newer versions.
|
||||
|
||||
Here are the available commands:
|
||||
<ul>
|
||||
|
@ -136,28 +136,28 @@
|
|||
will be opaque (alpha = @c 0xFF), unless R=G=B=0 (invisible).
|
||||
These colors are <b>not</b> premultiplied.
|
||||
</li>
|
||||
<li>Hexademical values: @c '#RRGGBB', @c '#RRGGBBAA', @c '#RGB', @c '#RGBA'</li>
|
||||
<li>Hexadecimal values: @c '\#RRGGBB', @c '\#RRGGBBAA', @c '\#RGB', @c '\#RGBA'</li>
|
||||
<li>The following string values are also accepted:</li>
|
||||
<tt><ul>
|
||||
<li>'white' == '#FFFFFF'</li>
|
||||
<li>'black' == '#000000'</li>
|
||||
<li>'red' == '#FF0000'</li>
|
||||
<li>'green' == '#008000'</li>
|
||||
<li>'blue' == '#0000FF'</li>
|
||||
<li>'darkblue' == '#0000A0'</li>
|
||||
<li>'yellow' == '#FFFF00'</li>
|
||||
<li>'magenta' == '#FF00FF'</li>
|
||||
<li>'cyan' == '#00FFFF'</li>
|
||||
<li>'orange' == '#FFA500'</li>
|
||||
<li>'purple' == '#800080'</li>
|
||||
<li>'brown' == '#A52A2A'</li>
|
||||
<li>'maroon' == '#800000'</li>
|
||||
<li>'lime' == '#00FF00'</li>
|
||||
<li>'gray' == '#808080'</li>
|
||||
<li>'grey' == '#808080'</li>
|
||||
<li>'silver' == '#C0C0C0'</li>
|
||||
<li>'olive' == '#808000'</li>
|
||||
<li>'invisible', 'transparent' == '#0000' -- (alpha is zero)</li>
|
||||
<li>'white' == '\#FFFFFF'</li>
|
||||
<li>'black' == '\#000000'</li>
|
||||
<li>'red' == '\#FF0000'</li>
|
||||
<li>'green' == '\#008000'</li>
|
||||
<li>'blue' == '\#0000FF'</li>
|
||||
<li>'darkblue' == '\#0000A0'</li>
|
||||
<li>'yellow' == '\#FFFF00'</li>
|
||||
<li>'magenta' == '\#FF00FF'</li>
|
||||
<li>'cyan' == '\#00FFFF'</li>
|
||||
<li>'orange' == '\#FFA500'</li>
|
||||
<li>'purple' == '\#800080'</li>
|
||||
<li>'brown' == '\#A52A2A'</li>
|
||||
<li>'maroon' == '\#800000'</li>
|
||||
<li>'lime' == '\#00FF00'</li>
|
||||
<li>'gray' == '\#808080'</li>
|
||||
<li>'grey' == '\#808080'</li>
|
||||
<li>'silver' == '\#C0C0C0'</li>
|
||||
<li>'olive' == '\#808000'</li>
|
||||
<li>'invisible', 'transparent' == '\#0000' -- (alpha is zero)</li>
|
||||
</ul></tt>
|
||||
</ul>
|
||||
<li>@c fillmode</li>
|
||||
|
@ -1173,7 +1173,7 @@ _blur_instruction_prepare(Evas_Filter_Program *pgm, Evas_Filter_Instruction *ins
|
|||
@param src Source buffer. This should be an alpha buffer.
|
||||
@param dst Destination buffer. This should be an RGBA buffer (although alpha is supported). Must be of the same size as @a src.
|
||||
@param black The shadows' color. Usually this will be black (@c #000).
|
||||
@param white The specular light's color. Usually this will be white (@c #FFF).
|
||||
@param white The specular light's color. Usually this will be white (@c \#FFF).
|
||||
@param fillmode This specifies how to handle @a map when its dimensions don't match those of @a src and @a dst. Default is to @c repeat. See @ref evasfilter_fillmode "fillmodes".
|
||||
|
||||
@note As of 2014/02/11, the ALPHA to RGBA support is of much better quality than ALPHA only, but @b very slow. RGBA sources are not supported yet.
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include "efl_canvas_gesture_private.h"
|
||||
|
||||
#define MY_CLASS EFL_CANVAS_GESTURE_MANAGER_CLASS
|
||||
#define EFL_GESTURE_RECOGNIZER_TYPE_TAP_FINGER_SIZE 10
|
||||
|
||||
typedef struct _Object_Gesture
|
||||
{
|
||||
|
@ -140,6 +139,7 @@ EOLIAN static Efl_Object *
|
|||
_efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd)
|
||||
{
|
||||
Eo *config;
|
||||
int finger_size = 0;
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
|
||||
pd->m_recognizers = eina_hash_pointer_new(EINA_FREE_CB(_hash_unref_cb));
|
||||
|
@ -150,7 +150,6 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M
|
|||
|
||||
/* this needs to always be present */
|
||||
config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
|
||||
efl_config_int_set(config, "glayer_tap_finger_size", EFL_GESTURE_RECOGNIZER_TYPE_TAP_FINGER_SIZE);
|
||||
efl_event_callback_add(config, EFL_CONFIG_EVENT_CONFIG_CHANGED, _gesture_manager_config_changed, pd);
|
||||
|
||||
//Register all types of recognizers at very first time.
|
||||
|
@ -162,7 +161,12 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M
|
|||
efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_FLICK_CLASS, obj));
|
||||
efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_ROTATE_CLASS, obj));
|
||||
efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_ZOOM_CLASS, obj));
|
||||
_update_finger_sizes(pd, EFL_GESTURE_RECOGNIZER_TYPE_TAP_FINGER_SIZE);
|
||||
/* realistically this will never fail, but the whole gesture layer breaks if this is 0 */
|
||||
finger_size = efl_config_int_get(config, "glayer_tap_finger_size");
|
||||
if (!getenv("EFL_RUN_IN_TREE"))
|
||||
finger_size = efl_config_int_get(config, "glayer_tap_finger_size");
|
||||
if (finger_size < 1) finger_size = 10;
|
||||
_update_finger_sizes(pd, finger_size);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue