invalid id. Fix T2086
Summary: In order to avoid getting returned an invalid id, we should
not be checking the currently active encoder and crtc combination
because outputs may have changed, encoders/crtc combinations could
have changed, etc, etc.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Ecore_Event_Key attribute "key" cannot be NULL. This
raise a segmentation fault in Enventor when hitting on
modifier keys.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
With cocoa you may have negatives values when Mouse Down or Up. This
changes fix this behavior by sending mouse event only if x and y are
inside the ecore_evas space.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit adds a method in Ecore_Cocoa_Window to be able to retrieve an unique
identifier for each window. It adds new events type and modify existing ones to
pass these windows identifiers through the event call chain. Resize, GotFocus and
LotFocus events are also updated to pass these identifiers to event handlers.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Don't use NSAppKitDefined events subtype for focus events, which contain NULL
window object most of the time. Use the NSWindowDelegate method designed for that
purpose instead. It fixes random focus issues in windows which was caused by
incorrect window identifier not found in ecore_evas_cocoa.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Until now, video_resize events was received only when application returned control
to the event loop. When a window is resized dynamically a lot of video_resize
events are emitted from EcoreCocoaWindow::windowDidResize and not handled
immediatly, only when the main thread is back to the ecore main loop. This is why
there are not refreshed window areas. Call ecore_main_loop_iterate() from
windowDidResize solves the issue.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
isKindOfClass should receive an instance of a class and a class as arguments and
not two class. It fixes Mouse events sent to a window on OSX.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This patch fix the semaphore initialisation on posix plateform
there was a preconditon test which returned the semaphore
uninitialised when count_init was 1, this caused the semaphore to
be unusable on OSX plateform. Furthermore, it seems that we need to
unlink the semaphore before its initialisation on OSX as there seems
to have some kind of persistence of the semaphore accross execution.
warning, this patch change the signification of the parametter
count_init on linux plateform, this parametter is now consistent on
every plateform, with the meaning of setting the initial count value
of the semaphore.
This used to be on linux 1 -> the semaphore is shared and initialised
at 1 and 0 -> the semaphore is not initialised, thus, by side effect
not shared and initialised at 0.
This patch set on linux plateform the semaphore as systematically
shared
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
The order of tranformation changed to scale, orientation, position as
in some cases it can lead to incorrect value for the bounding box.
@fix
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1942
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
During filling evas pick public data by API evas_3d_scene_pick
segfault can occur if mesh was created without texcoords.
See functions - _pick_data_mesh_add, _pick_data_texcoord_update
@fix
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1941
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Eina_Value must be allocated with eina_value_new() to be freed by eina_value_free().
@fix
Reviewers: felipealmeida, larryolj, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1927
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: When center of bounding sphere was out of frustum and number of intersections between bs and planes of frustum was more then 3, objects disappeared.
@fix
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1938
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
The new value is allocated using Eina_Mempool, it should be freed using
eina_mempool, not using libc free.
@fix
Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1940
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Fixes rendering in the following case:
- Object with a map has a mask
- Object is child of smart object which also has a map (eg. transit)
--> Masking did not apply to the children before this patch.
NOTE: This works fine in SW but still didn't work in GL, see the
following commit...
Summary: When ecore_init failed or when failed to initialize ecore_con_log_domain, then evil_shutdown was not called. So cleaned up code and added the fix.
@fix
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1921
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: _evil_init_count should never go below zero. This can occur, if a developer mistakenly calls evil_shutdown before calling evil_init. So fixing the code so that it never goes below zero.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1922
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This ports the deprecated screensaver_suspend and new API
screensaver_suspend to work with xcb.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This deprecates the old misspelled screensaver_suspend API
function and adds a new one.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This API function is misspelled, so after speaking with
Stefan, we've decided to deprecate this function add add a properly
spelled one.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: _init_con_ssl_init_count should not go below zero. This can occur if a developer mistakenly calls ssl shutdown before calling ssl init. So adding the check to prevent this.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1925
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Apparently eina_tmpstr_strlen counts the null character as well. This
doesn't follow how strlen works, as the latter excludes it from the count.
This resulted in mistreatment of the string in _eina_file_escape, with
tmp_str paths that had "../".
This fix will do for now, but it is advised that we avoid using
eina_tmpstr_strlen, to prevent such confusions in the future.
Test Plan:
The following lines will throw a valgrind 'invalid read of size 1' error
prior this fix:
char *path = "home/mydir/../myfile";
Eina_Tmpstr *tmp_str = eina_tmpstr_add(path);
char *ret_path = eina_file_path_sanitize(path);
@fix
Reviewers: cedric, stefan_schmidt
Subscribers: tasn, cedric
Differential Revision: https://phab.enlightenment.org/D1929
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
@fix
this fixes T1987 - the commit that broke it was:
commit 18d494489c
Author: Cedric BAIL <cedric.bail@samsung.com>
Date: Fri Jan 3 16:20:53 2014 +0900
eet: use eina_swap*() function instead of custom slower one.
I know. This title does not explain anything. Whatever.
This fixes the following issue:
- Mask a genlist (big mask)
- Each item has an icon masked (small mask)
- Apply a map to the genlist
- Scrolling the genlist
--> The big mask still works but totally screws up the
small icons with masks.
Note: Once again this patch only affects code paths where an
object is a mask.
Yeah, mixing maps and masks of masks in a genlist leads
to tons of amazing bugs :)
This commit removes x,y from the "mask" field in an object,
as they are duplicates of cur->geometry.{x,y} but were not
properly kept in sync.
This patch fixes a situation of:
- A genlist in a map
- Each item has an icon masked
- Scrolling the genlist
--> The masked items would not render properly before this
patch.
Remaining known problem:
- Mask a genlist (big mask)
- Each item has an icon masked (small mask)
- Apply a map to the genlist
- Scrolling the genlist
--> The big mask still works but totally screws up the
small icons with masks.
Note: These changes look scary just before the release
but I would have to backport them to 1.13.x as they
definitely are bug fixes. Also, they only concern
code paths used exclusively by masking.
All those masking bug fixes become harder to explain. But here goes:
- Take a genlist, apply a mask to it (for example put everything
in an elm_layout). Also play with various objects in the genlist.
- Also apply a map to it (for instance, elm_transit zoom).
--> Now some elements will be masked, some others will not,
and some may even not render at all.
This patch restores a mask in the current drawing context, instead
of just unsetting it.
In a situation where an object with mask of mask is in a map
(Yes! It can happen!) the masks would not get properly "multiplied".
Now the problem is that some objects still seem to bypass some
masks... Hmm...
get them
Summary: Some keys in certain keyboard layouts should not be repeated
so add a test which uses xkb to inform us if this key supports
repeating.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This is a left-over from a previous fix a few weeks ago.
The point of this "if" is just to avoid writing the COW value
if not needed.
For reference:
commit f876cf31f8
Author: Jean-Philippe Andre <jp.andre@samsung.com>
Date: Tue Dec 23 18:57:45 2014 +0900
Evas masking: Fix invalid geometry after mask redraw
Summary: If we fail to duplicate stdin, we should write out an error
and exit appropriately.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This reverts commit f52f562891.
This is reverted because it breaks eina_file_path_sanitize when using
"/../" in paths, for example:
eina_file_path_sanitize("/home/../mydir/myfile")
returns: "/mydir/myfili"
What invalid read size does this fix? Why was no test case specified?
Anyway, this change affects too much code to leave it in like this.
It is unable to do recursive reference such as:
> Having group A with GROUP part that has group B as source.
> Having group B with GROUP part that has group A as source.
Here we have a loop that is not allowed by edje_cc, so edje_edit also need
to check this case.
@fix
If "keyname" and "key" are NULL an Ecore_Event_Key is allocated
throught calloc. strlen() is called on these variables, which crashes
the program. As it is not correct to return a key event for NULL
keys to ecore, it is preferrable to return NULL and exit the function
before the key event is allocated, which fixes the crash in the same
time.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This should not be an ABI regression on the platform where it work (Unix). It is on Windows,
but the API was unusable at all without this change, so this is a necessary breakage to
unbreak things.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Also disable typed expression validation for now. The interfaces are not
finished yet so some things will fail validation because of unexistent
type definitions.
Fixes T2064.
@fix
Some of edje_edit functions allows to set up NULL instead of string,
but by using _edje_if_string_free() function it should set variable into NULL,
so previous data won't appear anymore.
@fix
Summary:
This is an attempt at fixing:
- T1767: The ultimate evil map & clip bug
Force recalculation and re-propagation of clipper geometry
after or just before a map is applied (only when transiting
between map enabled and map disabled).
I realized that doing clip_unset+clip_set in the E widget
code would fix the issue, but this is not a solution that
makes a lot of sense.
Unfortunately I have no idea about the side effects of this
patch, especially in terms of performance.
Fixes T1767 and maybe T1630.
Test Plan:
Open PackageKit popup in E, check the animations
and that clipping works fine both during, before and after
the animations.
Reviewers: raster, cedric
Reviewed By: cedric
Subscribers: cedric, Hermet
Maniphest Tasks: T1767
Differential Revision: https://phab.enlightenment.org/D1897
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Depth is not used in the ecore_x_window_full_new function, so
add missing EINA_UNUSED
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Let's use the proper variable names when assigning return
mask values.
NB: How did all this even get Into git with someone checking it and
compiling it ??
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we do not get the property we are looking for here, then
reset the Proper variable to 0. This fixes a build break.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: XA_CARDINAL is defined for xlib, XCB_ATOM_CARDINAL is defined
for xcb, so let's use the proper one and fix a build break.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
While invesigating some clip & map issues, I found some very
strange piece of code:
{
tmp = a;
a = c;
a = tmp;
}
This actually comes from a very old code refactoring where a
line in-between was removed:
tobj = obj->cur.map_parent;
obj->cur.map_parent = obj->cur.clipper->cur.map_parent;
- evas_object_clip_recalc(obj);
obj->cur.map_parent = tobj;
Adding this line back there doesn't seem to do anything anyways.
So, let's just remove useless code.
For the record (legacy evas):
commit e1f6f3c5f239dfd95a307949acd5f98831c0c3c0
Date: Fri Aug 17 06:16:04 2012 +0000
evas/render - code refactoring.
SVN revision: 75351
The functions to take or release a session no longer accept session
name as a parameter, so fix calls to those functions
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The session take/release functions no longer need the session name
paramater, so remove that.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The session take/release functions no longer require the name of the
session, so remove the function parameter
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: These functions have been moved to the private header file
now, and thus this file is no longer needed.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Ecore_Drm_Device
Summary: This moves storing the session name and VT fields inside the
device structure. This also adds a field so we can store the keyboard
mode of the tty, and restore it on close.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This moves the logind function prototypes to the private
header and thus removes the need for a separate logind header file.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This moves the VT switch handling code to the tty file, and
sets the proper flags on the VT when opened.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a few issues with the logind code such as: Getting
the VT from systemd (if available), Properly setup the VT using proper
'open' flags, adding a 'restore' function to reset the tty properly,
and handle take/release session.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This cleans up the tty code a bit, and makes it the
responsibility of the tty code to handle VT switching signals
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This sets the default session to NULL when a device is
created. Also a formatting fix
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
take/release session control inside dbus functions
Summary: These changes move the storage of session name to inside the
Ecore_Drm_Device structure and remove calls to take/release session
control to outside of the dbus code
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Some complex examples of masking with mapped smart objects
would fail miserably, rendering the object without any mask,
and/or showing the mask itself somewhere in white color...
This @fix the parsing of dirs from the xdg env vars. Now always remove
the leading / char from the paths.
This was causing lots of trouble on my system, where XDG_DATA_DIRS is:
/usr/local/share/enlightenment:/usr/local/share:/usr/local/share/:/usr/share/
At first /usr/local/share was added 2 times in the list, one with the / and one
witout, causing a double lookup for each file.
Secondly the icon cache was totally unusable as the cached paths ended up
as: /usr/share//icons/Mint-X/places/32/folder.svg. The double / in there
was making the cache lookup to fail and anways return the biggest icon
available. Causing a big system slowdown whe searching for icons.
As a bonus the function now use eina_str_split instead of the custom splitting
code that require a bad special handling for the last item.
actually have a grabbed button
Summary: If we don't have an actual grabbed mouse button, then don't
send a mouse up event. Caught this while adding e_grabinput support to
Enlightenment.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The memory usage graph was going up and to the right!
I was told this is always a good thing!
... maybe not this time :)
Hopefully I didn't forget a case. An intense session of
genlist scrolling with masks all over the place and masks
of masks didn't show any glitch, crash or memory leak.
The main difference between 1.12 and 1.13 memory foot print is actually
related to this two pointer to mask. I am wondering if there is not an
issue here also has we do have a duplicated pointer. We have prev_mask
and mask in both cur and prev state of an Evas_Object, but only mask
and prev_mask from the cur state seems to be accessed.
If we can remove two pointers from those state, we should have a decent
win in expedite benchmark. Hopefully 300KB to win there (Close to half
the additional cost in memory).
Summary: It turns out we don't need to handle open & setup of the tty
unless we are Not using systemd. This fixes an issue during
enlightenment restart where we are unable to reopen the tty.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When we shutdown outputs, we should reset the hardware cursor
state and the saved crtc mode in order to reset things back to normal.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When we are shutting down a tty, restore the old keyboard
mode that we retain from tty_setup.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we are using a touchscreen, there will be no pointer and
thus no cursor_name to use. Trap for that case by checking if
input->cursor_name is valid.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The flag should be set on the mask itself.
Checking for (x,y) being inside the mask can be an expensive operation,
so further optimization will be required.
there are possible security implications by not checking values of
size fields to see if they are within the data range AND are not 0 or
negative. so do this.
@fix
Macros should be surrounded with do {} while() statements,
otherwise there can be issues, like the macro not requiring a semicolon
after the statement or etc.
@fix
Summary: Now that things are shaping up, we can re-enable the K_OFF
tty mode which will help with buffering input, etc.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When we do an input_ungrab, we should be sending a mouse up
event so that apps/elm/etc know that the mouse has been released. This
fixes an issue in the Elm Features DnD test report by Daniel Zaoui
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: We should not be setting a 'move' cursor unless we actually
make the call to start a drag
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This patch adds support to limit the mouse from moving
outside the output dimensions, and fixes coordinate transformation
calls to use the Output from the Input device
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This just removes the call to the no longer used/needed
function to update the input device's view of the output.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Since we now have a reference to the actual output inside the
input device, we no longer need this function to update the Input
device's view of the output size.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This adds an actual Ecore_Drm_Output pointer to the
Ecore_Drm_Evdev structure so we can check the output size to limit
mouse corrdinates.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Nothing was printed to journald before because sd_journal_send_with_location
expects file and line to be of the NAME=VALUE form.
Change-Id: I382b82b665558fddebae61b7d0a8d4de87638511
Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@globallogic.com>
Reviewers: kuri, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1865
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
@fix
this fixes the eina mmap safety handler to only handle what comes
from actual i/o errors (not actual corrupt/hw memory faults or invalid
objects), and if it's not a sigbus eina mmap should handle then pass
it onto the previous handler before eina mmap took over.
Summary: Coverity reports idential code for different branches here.
Not sure WHY that was done, but I commented out the existing if
statement for posterity.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
It is not ready as a public API yet. It needs to run on GeoClue1
and GeoClue2 which will definitely bring API changes as some parts
are tied to mcuh to what GeoClue1 offers right now.
The header.id was masked before using it as index in the _eo_classes
array and was not unmasked when used.
It hasn't caused segfault (by sheer luck) but was wrong.
@fix
Previously Eina_Stringshare printf variant where returning NULL with ("%s", ""). This
is highly disturbing as you would have gotten "(null)", if you asked for ("s", NULL).
To clarify and make things logical, we now return "".
Summary:
There was no conversion to the double quotation mark in the evas_textblock_text_utf8_to_markup function.
The price of the text coming out to API and text coming out to Textblock was different as a result.
As a result, Two text lengths came out differently.
So, I added the exceptional treatment part in the evas_textblock_text_utf8_to_markup function.
@fix
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1853
Summary:
There will be several methods to set orientation in edc, so we have decided to make one big vector,
the main reason is that we use quaternion by default, but look_at, for example, is given as 6 coordinates.
Reviewers: Hermet, cedric, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1693
Summary: We can make opaque and input region handling simplier if we
just use one opaque & input region per window. Previous code would
always create a new region, set it to the surface, then destroy it.
This code works much nicer in that it hammers the protocol with less
region create/destroy calls.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This should avoid potential crash during shutdown while some Eio thread
were still running. We are still not blocking for more than 30s, so if
an IO is blocked on a dead device, you should be fine.
This enable the possibility to block the main loop until a
specific thread is done. It may trigger still process ending
of other thread during that function call, but not any other
type of event (timer, animator, idler, ... are all ignored).
Well... actually this is not exactly a fix.
It just restores the previous behaviour, and allows AA to
work. As in, it won't draw ugly black lines but properly
blend to transparent.
But there is still a problem:
The image map render function changes the alpha flag on the source
image if AA is enabled or if the map has an alpha color. This is
actually wrong as images forcefully set to not have any alpha
(with evas_object_image_alpha_set(0)) will then not be opaque
anymore.
Right now I can't think of a solution (also I don't quite follow
the entire pipeline in evas map...). Changing the flag will
make some opaque areas transparent. Not changing the flag will
produce ugly artifacts where AA blending should happen. Fix one
bug and the other appears, and vice versa.
This can be tested with the example evas-map-aa and adding an
alpha channel to cube1.png (with gimp for instance) but manually
setting alpha to 0 in the code. Weird stuff will happen (try
playing with the map and pressing I to switch to/from image mode).
The selected op func was not performing the correct operation,
thus producing rendering artifacts. These functions should not
be used anywhere except in case of masking... which was not an
available option earlier.
It was doing (wrong):
dst = interp(mask, src, dst)
Instead of (correct):
dst = dst + (1 - mask) * src
NOTE:
This commit also disables MMX, SSE3 & NEON implementations of
pixel_mask blend operations, since they are also broken.
In case the clipper is a mask object, we should use precise
event masking. By default precise_is_inside is not enabled
because it is expensive, but it should probably be set by
the application when they use masks as clippers.
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
This implements supports for masking inside evas_render, which
means:
- Render the mask itself into a surface (ALPHA if possible)
- Pass this mask surface to the draw context
- Apply mask recursively in case a masked object is contained
by another masked object.
@feature
Work done by Jaeun Choi, rebased & squashed by jpeg.
This commit introduces changes to the low-level draw functions
of the SW engine considering the existence of an alpha mask image.
Features:
- Font masking (TEXT, TEXTBLOCK),
- Rectangle masking,
- Image masking (all image scaling functions should be handled).
The mask image itself is not yet set in the draw context (see
following commits).
@feature
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Summary: The dbus calls to TakeControl and ReleaseControl of a session
are actual Methods that need to be setup and called in order to
operate properly. As such, this commit fixes that issue by using the
proper eldbus method calls, and fixes an issue where shutting down
Enlightenment would lead to "cannot release control" error messages.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: We need to clean tty handlers and close the tty Before we can
call logind_disconnect as that function ends up shuttting down our
dbus connection.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
So I've discovered some weird output values after drawing
some text. The destination alpha would become 0xFE even
when the back buffer had a background with 0xFF alpha.
Example:
Dest is 0xff00ff00 (green).
Color is 0xffffffff (white).
Current font alpha is 170 (0xaa).
--> Output was 0xFEaaFEaa instead of 0xFFaaFFaa.
This is because of some slightly invalid calculation
when doing the font masking (mtab[v] = 0x55 above).
Indeed, MUL_256 takes alpha values in the range [1-256]
and not [0-256] as was assumed.
Updated the code for the "inheritance helper" functions and classes
to be in conformance with the new wrapper architecture.
Member variable "parents" of efl::eo::eo_class struct was split in two
member variables, "ancestors" and "parents", the former containing all
Eo class ancestors and the later only the direct bases.
Changed all required files accordingly.
Check to avoid using biding string when the parameter is @out now matches
any variation of "char".
Add default constructor to efl::eo::concrete in order to allow it to be
NULL initialized in the "inheritance helper" classes.
Removed conflicting parent_set member function in the efl::eo::inherit
class.
Removed the "inheritance_extension_function" generator since it is no
longer used.
Overloaded address-of operator for C++ Eolian wrappers for implicit converting
to any ancestor pointer type when getting the object memory address.
Added new grammars to aid the creation of the pointer wrappers
responsible of doing the implicit conversions.
Added a unit test which checks the address-of overload for arbitrary classes.
Added new .eo files to be used in it.
Solved diamond inheritance problem by completely removing inheritance in
the abstract class.
All ancestors are inherited directly in the concrete class.
The algorithm that list the ancestors also avoid repetition.
Now concrete classes define methods too. This helps referring the correct
method directly by the object type (when there are methods with the same
name).
Moved the declaration and definition of constructor methods to the concrete
class, since they should not be used in derived classes.
Updated example that call "color_set".
With this model, if two ancestor classes have a method with the same name,
to call one of them from a derived class you must write the scoped name of
the member function in the wrapper.
In this case, either Evas.Object and Evas.SmartObject have a property
named "color".
Added "from_global" option to the full_name grammar too.
Using a new architecture in the generated files that simplify multiple
inheritance and allows the use of interface types as parameters.
No longer using a hand-crafted C++ header for eo_base.eo.
This file was added to the generation process.
Updated all files that are dependent in the hand-crafted eo_base
C++ header.
Now there is a class that contains the essentials functions of the former
eo::base wrapper and that is used to create (through inheritance) the
"concrete" classes for all Eo generated wrappers.
No longer binding any function or property that are protected, private or
legacy for now.
eolian_type_instance is now a struct with general information for the
whole type.
Added the new header file namespace_generator.hh to hold namespace
generation grammars.
Separated declaration and definition of Eo wrappers methods.
Referring for most objects by its full name (starting at the global
namespace ::) in the generated files.
Created additional helper grammars to avoid code replication.
Removed a TODO comment referring to a doubt about inheritance of
constructor methods.
Added a TODO comment regarding memory allocation for callbacks in static
member functions.
No longer reverting to the native type when the parameter has "@out"
direction.
Added "is_out" member variable to eolian_type class.
With that, generators can keep track of the direction of the parameters.
Also added helper functions "type_is_out" and "type_is_complex".
Created "to_native" functions in eo_cxx_interop.hh to convert binding types
from C++ arguments to the actual C function arguments.
Added static assertions in these functions to enforce compatibility
between the binding and the native type (Required by @out parameters).
Reworked the overload of the "to_c" function for eo::base derivated
objects. Now there is a overload that rely in the compatibility
between the native type and the wrapper, enabling a wrapper to be used as
an output parameter.
Added callbacks to the event EO_EV_DEL for deleting heap-allocated
function objects. This will enforce that the allocated memory,
necessary for maintaining these callable objects alive, is freed at
least when the underlaying Eo object is destroyed.
Functions and constructor methods are now able to have multiple
callback types.
Removed some unused generators, since they become inconsistent now that
functions are required to handle multiple callback types.
Allocating callback objects in the constructor methods instead of
delaying it until the final constructor is called.
Created some generators to avoid code repetition.
Now the generator parameters_forward_to_c replicate the behavior of the
generator parameters_list. The generator parameters_list was, then,
removed since it have a less intuitive name.
Added a TODO comment regarding the behaviour of simple not translating
callbacks that are not followed by a user data pointer.
The generator parameter_type was moved from "parameters_generator.hh" to
"type_generator.hh" for more consistency and convenience.
In convert.cc: Reading functions instead of implements to convert the
Eolian_Class. It avoids creation of methods that do not belong to the
class, in special it avoids calling the default constructor twice in the
generated code.
No longer generating one constructor in the C++ wrapper for each eolian
class constructor, since the correct behavior demands that all constructor
should be called. Now the wrappers have "constructor methods" that
must be called when creating a new object.
Updated test cases and examples to match the new interface. Some class
constructors and some test cases have to be removed since they were based
on the wrong assumption that constructors are mutually exclusive.
Created new generators for forwarding parameters and for looping over
the relevant parameters to the C++ wrapper executing a generic lambda.
Added a TODO comment regarding the call of constructor methods of all
base classes. Currently there is no base type with constructors, so this
situation should be discussed more.
Added a TODO comment regarding the way callback parameters are being
processed.
Added static assertion in the generated header to ensure that the wrapper
have the same size of Eo*, thus grating compatibility between these types.
Added static assertion in the generated header to ensure that the wrapper
have standard layout. This should ensure correct type sizes when dealing
with inheritance.
Created a test to ensure that eo::base and the eolian wrappers have the
same size of a Eo*.
Added eolian_cxx_test_wrapper.cc to the list of test source files in
Makefile_Eolian_Cxx.am.
Summary: Add new function for replacing string with using eina_stringshare_replace() and change _edje_if_string_free() to setup passed string to NULL.
@fix
Reviewers: raster, Hermet, seoz, cedric
Reviewed By: cedric
Subscribers: reutskiy.v.v
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D1835
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Refine odd lines to delete _edje_timer
Test Plan: Run example using edc programs to change state
Reviewers: raster, cedric, woohyun, jaehwan, Hermet
Reviewed By: Hermet
Subscribers: cedric, seoz
Differential Revision: https://phab.enlightenment.org/D1838
curl is dumb. it needs to poll its own fd for data, it gets confused with its own timeouts, and sometimes it forgets that it's supposed to be doing anything.
this fixes:
* connection timeout processing
* connection data processing order
also curl_multi_timeout calls are now done from a single function to handle all of this stupidness in one place
maybe backport after more testing...