On Tue, 6 May 2014 13:51:37 +0200 Stefan Schmidt <[email protected]> said:
> Hello. > > On Wed, 2014-04-30 at 16:11, Tom Hacohen wrote: > > Hey, > > > > As promised, these are my ABI reports. There's a bit of noise because of > > the switch to Eo2 and the fact that our object's Eo API is not always > > ifdefed out in the headers (the Eo api is though, so they can't be used > > without the define). Also, obviously, the symbols exposed in the binary > > that can not be turned off. I think though, that it's easy enough to > > scan through the noise and find the issues. > > > > Here's the new index for all the scans: > > http://enlightenment.org/~tasn/abi/ > > > > > > Please have a look and share if you see anything suspicious. > > I like to have some more people looking over this. The list out of my > head would be raster, cedric and k-s as they have expenrience with > this but obviously everyone is welcome. i have it marked. i just havent managed to have time due to travels (and now a cat sleeping on my left hand). > > A good example would be: > > [+] elm_widget_focus_highlight_geometry_get ( Evas_Object const* obj, > > Evas_Coord* x, Evas_Coord* y, Evas_Coord* w, Evas_Coord* h ) (1) > > > > But I guess that's "fine" because it's internal. > > The application linked against the old lib and now switching to the > new one should still work with this. A problem arises this new > parameter changes the behaviour if not set. Its available through > elm_widget.h so its not really internal. > > I spent some time going through this and want to share and discuss my > doubts. Starting with elm, efl is below. > > Elementary: > ----------- > > o 1359 new symbols added. The Majority it due to eolian/eo2 and thus > not so relevant until we declare them stable. > > o There are some other symbols added though which one can easily miss. > Listing them here and I would like to hear comments if we are fine > with maintaining these new APIs > > Newly added symbols: > > elm_config.h, libelementary.so.1.10.0 > elm_config_accel_preference_get ( ) > elm_config_accel_preference_set ( char const* pref ) > elm_config_atspi_mode_get ( ) > elm_config_atspi_mode_set ( Eina_Bool is_atspi ) > elm_config_color_classes_list_free ( Eina_List* list ) > elm_config_color_classes_list_get ( ) > elm_config_color_overlay_apply ( ) > elm_config_color_overlay_list_get ( ) > elm_config_color_overlay_set ( char const* color_class, int r, int g, int b, > int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3 ) > elm_config_color_overlay_unset ( char const* color_class ) > elm_config_focus_auto_scroll_bring_in_enabled_get ( ) > elm_config_focus_auto_scroll_bring_in_enabled_set ( Eina_Bool enabled ) > elm_config_focus_highlight_clip_disabled_get ( ) > elm_config_focus_highlight_clip_disabled_set ( Eina_Bool disable ) > elm_config_focus_move_policy_get ( ) elm_config_focus_move_policy_set ( enum > Elm_Focus_Move_Policy policy ) elm_config_item_select_on_focus_disabled_get > ( ) elm_config_item_select_on_focus_disabled_set ( Eina_Bool enabled ) > > elm_focus.h, libelementary.so.1.10.0 > elm_object_focused_item_get ( Evas_Object const* obj ) > elm_object_item_focus_get ( Elm_Object_Item const* it ) > elm_object_item_focus_set ( Elm_Object_Item* it, Eina_Bool focused ) > > elm_scroll.h, libelementary.so.1.10.0 > elm_object_scroll_item_loop_enabled_get ( Evas_Object const* obj ) > elm_object_scroll_item_loop_enabled_set ( Evas_Object* obj, Eina_Bool enable ) > > elm_widget.h, libelementary.so.1.10.0 > _elm_widget_item_focus_get ( Elm_Widget_Item const* item ) > _elm_widget_item_focus_get_hook_set ( Elm_Widget_Item* item, > Elm_Widget_Focus_Get_Cb func ) _elm_widget_item_focus_set ( Elm_Widget_Item* > item, Eina_Bool focused ) _elm_widget_item_focus_set_hook_set > ( Elm_Widget_Item* item, Elm_Widget_Focus_Set_Cb func ) > elm_widget_focus_highlight_enabled_get ( Evas_Object const* obj ) > elm_widget_focus_highlight_focus_part_geometry_get ( Evas_Object const* obj, > Evas_Coord* x, Evas_Coord* y, Evas_Coord* w, Evas_Coord* h ) > elm_widget_focused_item_get ( Evas_Object const* obj ) > elm_widget_item_loop_enabled_get ( Evas_Object const* obj ) > elm_widget_item_loop_enabled_set ( Evas_Object* obj, Eina_Bool enable ) > elm_gengrid.eo.legacy.h, libelementary.so.1.10.0 > elm_gengrid_wheel_disabled_get ( Eo const* obj ) > elm_gengrid_wheel_disabled_set ( Eo* obj, Eina_Bool disabled ) > > > I also wonder why we have some newly added symbols in the generated legacy > headers. Should they not cover what we already had thus legacy? > > > elm_gengrid_legacy.h, libelementary.so.1.10.0 > elm_gengrid_reorder_mode_start ( Evas_Object* obj, Ecore_Pos_Map tween_mode ) > elm_gengrid_reorder_mode_stop ( Evas_Object* obj ) > > elm_photo.eo.legacy.h, libelementary.so.1.10.0 > elm_photo_editable_get ( Eo const* obj ) > elm_photo_fill_inside_get ( Eo const* obj ) > elm_photo_size_get ( Eo const* obj ) > > elm_route.eo.legacy.h, libelementary.so.1.10.0 > elm_route_emap_set ( Eo* obj, void* emap ) > > o Removed symbols seem only to come from the eo2 change which we have > declared unstable right now. But please have another look if that is > correct: > > elm_atspi_object_eo.h, libelementary.so.1.9.3 > elm_atspi_component_interface_get ( ) > elm_atspi_obj_class_get ( ) > elm_atspi_widget_obj_class_get ( ) > elm_atspi_window_interface_get ( ) > > elm_interface_fileselector.h, libelementary.so.1.9.3 > elm_fileselector_interface_get ( ) > > elm_interface_scrollable.h, libelementary.so.1.9.3 > elm_obj_pan_eo_class_get ( ) > elm_scrollable_interface_get ( ) > > elm_web_legacy.h, libelementary.so.1.9.3 > elm_web_uri_get ( Evas_Object const* obj ) > > ^^^^ This one looks suspicious to me. Can our elm and webkit people please > comment on this removal? i saw that and made a mental note to look, but it almoste certainly should not have gone away. > elm_widget.h, libelementary.so.1.9.3 > elm_widget_class_get ( ) > > o Other problems > > elm_map_legacy.h, libelementary.so.1.9.3 > [−] elm_map_canvas_to_region_convert ( Evas_Object const* obj, Evas_Coord > const x, Evas_Coord const y, double* lon, double* lat ) (2) changed to: > elm_map_canvas_to_region_convert ( Eo const* obj, Evas_Coord x, Evas_Coord y, > double* lon, double* lat ) > > The removal of the const here can cause us trouble or am I wrong? no. those consts for x and wy are basically useless and misleading.++ > o We also have tons of changes in all legacy headers from Evas_Object > to Eo, but I guess that might be ok in the legacy headers. yeah. thats fine given the new efl infra. > o Many constants have been changed but from what I have seen only in > the generated eo code thats the problem with the abi check. it includes the eo apis and that adds a lot of noise. > EFL: > ---- > o Ignoring all eo based added symbols I see the following new ones. > Are we fine with maintaining those? > > Ecore_Evas.h, libecore_evas.so.1.10.0 > ecore_evas_aux_hint_add ( Ecore_Evas* ee, char const* hint, char const* val ) > ecore_evas_aux_hint_del ( Ecore_Evas* ee, int const id ) > ecore_evas_aux_hint_val_set ( Ecore_Evas* ee, int const id, char const* val ) > ecore_evas_aux_hints_allowed_get ( Ecore_Evas const* ee ) > ecore_evas_aux_hints_supported_get ( Ecore_Evas const* ee ) > > Ecore_X_Atoms.h, libecore_x.so.1.10.0 > ECORE_X_ATOM_E_WINDOW_AUX_HINT [data] > ECORE_X_ATOM_E_WINDOW_AUX_HINT_ALLOWED [data] > ECORE_X_ATOM_E_WINDOW_AUX_HINT_SUPPORT [data] > ECORE_X_ATOM_E_WINDOW_AUX_HINT_SUPPORTED_LIST [data] > > Edje_Common.h, libedje.so.1.10.0 > edje_object_part_object_name_get ( Evas_Object const* obj ) > > Eet.h, libeet.so.1.10.0 > eet_data_image_colorspace_get ( Eet_File* ef, char const* name, char const* > cipher_key, Eet_Colorspace const** cspaces ) > eet_data_image_decode_to_cspace_surface_cipher ( void const* data, char > const* cipher_key, int size, unsigned int src_x, unsigned int src_y, unsigned > int* d, unsigned int w, unsigned int h, unsigned int row_stride, > Eet_Colorspace cspace, int* alpha, int* comp, int* quality, > Eet_Image_Encoding* lossy ) eet_data_image_read_to_cspace_surface_cipher > ( Eet_File* ef, char const* name, char const* cipher_key, unsigned int src_x, > unsigned int src_y, unsigned int* d, unsigned int w, unsigned int h, unsigned > int row_stride, Eet_Colorspace cspace, int* alpha, int* comp, int* quality, > Eet_Image_Encoding* lossy ) eet_data_read_cipher_buffer ( Eet_File* ef, > Eet_Data_Descriptor* edd, char const* name, char const* cipher_key, char* > buffer, int buffer_size ) > > Eeze.h, libeeze.so.1.10.0 > eeze_udev_get ( ) > eeze_udev_syspath_check_property ( char const* syspath, char const* property, > char const* value ) eeze_udev_syspath_check_sysattr ( char const* syspath, > char const* sysattr, char const* value ) > eeze_udev_syspath_get_parent_filtered ( char const* syspath, char const* > subsystem, char const* devtype ) > > eina_accessor.h, libeina.so.1.10.0 > eina_accessor_clone ( Eina_Accessor* accessor ) > > eina_hash.h, libeina.so.1.10.0 > eina_hash_list_append ( Eina_Hash* hash, void const* key, void const* data ) > eina_hash_list_prepend ( Eina_Hash* hash, void const* key, void const* data ) > eina_hash_list_remove ( Eina_Hash* hash, void const* key, void const* data ) > > eina_inarray.h, libeina.so.1.10.0 > eina_inarray_resize ( Eina_Inarray* array, unsigned int new_size ) > > eina_log.h, libeina.so.1.10.0 > eina_log_domain_registered_level_set ( int domain, int level ) > > Eio.h, libeio.so.1.10.0 > eio_memory_burst_limit_get ( ) > eio_memory_burst_limit_set ( size_t limit ) > > Evas_Common.h, libevas.so.1.10.0 > evas_font_path_global_append ( char const* path ) > evas_font_path_global_clear ( ) > evas_font_path_global_list ( ) > evas_font_path_global_prepend ( char const* path ) > > o Same question why we have new symbols listed in legacy as I raised in elm > > evas.eo.legacy.h, libevas.so.1.10.0 > evas_event_feed_key_down_with_keycode ( Eo* obj, char const* keyname, char > const* key, char const* string, char const* compose, unsigned int timestamp, > void const* data, unsigned int keycode ) evas_event_feed_key_up_with_keycode > ( Eo* obj, char const* keyname, char const* key, char const* string, char > const* compose, unsigned int timestamp, void const* data, unsigned int > keycode ) > > evas_image.eo.legacy.h, libevas.so.1.10.0 > evas_object_image_mmap_get ( Eo const* obj, Eina_File const** f, char const** > key ) evas_object_image_scene_get ( Eo const* obj ) > evas_object_image_scene_set ( Eo* obj, Evas_3D_Scene* scene ) > > o Removed symbols have only been in EO headers > > o Again some Evas_Object to Eo changes inEO legacy headers. > > o Some changes in eet public APIs from int to Eet_Image_Encoding enum > > Eet.h, libeet.so.1.9.3 > [+] eet_data_image_decode ( void const* data, int size, unsigned int* w, > unsigned int* h, int* alpha, int* compress, int* quality, int* lossy ) (1) > [+] eet_data_image_decode_cipher ( void const* data, char const* cipher_key, > int size, unsigned int* w, unsigned int* h, int* alpha, int* compress, int* > quality, int* lossy ) (1) [+] eet_data_image_decode_to_surface ( void const* > data, int size, unsigned int src_x, unsigned int src_y, unsigned int* d, > unsigned int w, unsigned int h, unsigned int row_stride, int* alpha, int* > compress, int* quality, int* lossy ) (1) [+] > eet_data_image_decode_to_surface_cipher ( void const* data, char const* > cipher_key, int size, unsigned int src_x, unsigned int src_y, unsigned int* > d, unsigned int w, unsigned int h, unsigned int row_stride, int* alpha, int* > compress, int* quality, int* lossy ) (1) [+] eet_data_image_encode ( void > const* data, int* size_ret, unsigned int w, unsigned int h, int alpha, int > compress, int quality, int lossy ) (1) [+] eet_data_image_encode_cipher > ( void const* data, char const* cipher_key, unsigned int w, unsigned int h, > int alpha, int compress, int quality, int lossy, int* size_ret ) (1) [+] > eet_data_image_header_decode ( void const* data, int size, unsigned int* w, > unsigned int* h, int* alpha, int* compress, int* quality, int* lossy ) (1) > [+] eet_data_image_header_decode_cipher ( void const* data, char const* > cipher_key, int size, unsigned int* w, unsigned int* h, int* alpha, int* > compress, int* quality, int* lossy ) (1) [+] eet_data_image_header_read > ( Eet_File* ef, char const* name, unsigned int* w, unsigned int* h, int* > alpha, int* compress, int* quality, int* lossy ) (1) [+] > eet_data_image_header_read_cipher ( Eet_File* ef, char const* name, char > const* cipher_key, unsigned int* w, unsigned int* h, int* alpha, int* > compress, int* quality, int* lossy ) (1) [+] eet_data_image_read ( Eet_File* > ef, char const* name, unsigned int* w, unsigned int* h, int* alpha, int* > compress, int* quality, int* lossy ) (1) [+] eet_data_image_read_cipher > ( Eet_File* ef, char const* name, char const* cipher_key, unsigned int* w, > unsigned int* h, int* alpha, int* compress, int* quality, int* lossy ) (1) > [+] eet_data_image_read_to_surface ( Eet_File* ef, char const* name, unsigned > int src_x, unsigned int src_y, unsigned int* d, unsigned int w, unsigned int > h, unsigned int row_stride, int* alpha, int* compress, int* quality, int* > lossy ) (1) [+] eet_data_image_read_to_surface_cipher ( Eet_File* ef, char > const* name, char const* cipher_key, unsigned int src_x, unsigned int src_y, > unsigned int* d, unsigned int w, unsigned int h, unsigned int row_stride, > int* alpha, int* compress, int* quality, int* lossy ) (1) [+] > eet_data_image_write ( Eet_File* ef, char const* name, void const* data, > unsigned int w, unsigned int h, int alpha, int compress, int quality, int > lossy ) (1) [+] eet_data_image_write_cipher ( Eet_File* ef, char const* name, > char const* cipher_key, void const* data, unsigned int w, unsigned int h, int > alpha, int compress, int quality, int lossy ) (1) > > Somehow in the back of my head I have a note that enums are not int > everywhere. Are we care about these cases? > > o More constants changes in EO legacy headers > > > This concludes what I have found. In summary I think most issues are > noise from EO and get be ignored right now but we should have another > look at the newly added APIs to make sure we are happy with them. Also > the removal of elm_web_uri_get() strikes me odd and I would like to > hear about it. > > regards > Stefan Schmidt > > ------------------------------------------------------------------------------ > Is your legacy SCM system holding you back? Join Perforce May 7 to find out: > • 3 signs your SCM is hindering your productivity > • Requirements for releasing software faster > • Expert tips and advice for migrating your SCM now > http://p.sf.net/sfu/perforce > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) [email protected] ------------------------------------------------------------------------------ Is your legacy SCM system holding you back? Join Perforce May 7 to find out: • 3 signs your SCM is hindering your productivity • Requirements for releasing software faster • Expert tips and advice for migrating your SCM now http://p.sf.net/sfu/perforce _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
