summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/ecore/Ecore.h4
-rw-r--r--src/lib/ecore/Ecore_Common.h12
-rw-r--r--src/lib/ecore/Efl_Core.h4
-rw-r--r--src/lib/ecore/ecore.c4
-rw-r--r--src/lib/ecore/ecore_app.c6
-rw-r--r--src/lib/ecore/ecore_events.c150
-rw-r--r--src/lib/ecore/ecore_exe_posix.c17
-rw-r--r--src/lib/ecore/ecore_exe_ps3.c20
-rw-r--r--src/lib/ecore/ecore_getopt.c4
-rw-r--r--src/lib/ecore/ecore_pipe.c8
-rw-r--r--src/lib/ecore/ecore_private.h17
-rw-r--r--src/lib/ecore/ecore_time.c6
-rw-r--r--src/lib/ecore/ecore_timer.c74
-rw-r--r--src/lib/ecore/efl_accelerate_interpolator.c16
-rw-r--r--src/lib/ecore/efl_accelerate_interpolator.eo14
-rw-r--r--src/lib/ecore/efl_boolean_model.c10
-rw-r--r--src/lib/ecore/efl_boolean_model.eo6
-rw-r--r--src/lib/ecore/efl_bounce_interpolator.c40
-rw-r--r--src/lib/ecore/efl_bounce_interpolator.eo24
-rw-r--r--src/lib/ecore/efl_composite_model.c2
-rw-r--r--src/lib/ecore/efl_core_command_line.eo2
-rw-r--r--src/lib/ecore/efl_core_env.eo2
-rw-r--r--src/lib/ecore/efl_cubic_bezier_interpolator.c50
-rw-r--r--src/lib/ecore/efl_cubic_bezier_interpolator.eo26
-rw-r--r--src/lib/ecore/efl_decelerate_interpolator.c16
-rw-r--r--src/lib/ecore/efl_decelerate_interpolator.eo14
-rw-r--r--src/lib/ecore/efl_divisor_interpolator.c39
-rw-r--r--src/lib/ecore/efl_divisor_interpolator.eo20
-rw-r--r--src/lib/ecore/efl_exe.c5
-rw-r--r--src/lib/ecore/efl_linear_interpolator.eo3
-rw-r--r--src/lib/ecore/efl_loop.c22
-rw-r--r--src/lib/ecore/efl_loop_message_handler.c12
-rw-r--r--src/lib/ecore/efl_loop_timer.eo4
-rw-r--r--src/lib/ecore/efl_sinusoidal_interpolator.c16
-rw-r--r--src/lib/ecore/efl_sinusoidal_interpolator.eo13
-rw-r--r--src/lib/ecore/efl_spring_interpolator.c44
-rw-r--r--src/lib/ecore/efl_spring_interpolator.eo24
-rw-r--r--src/lib/ecore/meson.build6
-rw-r--r--src/lib/ecore_con/Ecore_Con.h6
-rw-r--r--src/lib/ecore_con/ecore_con_url_curl.c4
-rw-r--r--src/lib/ecore_con/efl_net_control_manager.eo2
-rw-r--r--src/lib/ecore_con/efl_net_dialer_http.eo6
-rw-r--r--src/lib/ecore_con/efl_net_dialer_websocket.eo2
-rw-r--r--src/lib/ecore_con/efl_net_ssl_conn-openssl.c8
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_device.c2
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_outputs.c4
-rw-r--r--src/lib/ecore_evas/ecore_evas.c4
-rw-r--r--src/lib/ecore_evas/ecore_evas_drm.h1
-rw-r--r--src/lib/ecore_evas/ecore_evas_util.c1
-rw-r--r--src/lib/ecore_file/Ecore_File.h8
-rw-r--r--src/lib/ecore_file/ecore_file_private.h4
-rw-r--r--src/lib/ecore_input_evas/ecore_input_evas_private.h4
-rw-r--r--src/lib/ecore_win32/ecore_win32_event.c55
-rw-r--r--src/lib/ecore_wl2/Ecore_Wl2.h165
-rw-r--r--src/lib/ecore_wl2/ecore_wl2.c4
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_display.c44
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_internal.h60
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_private.h6
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_window.c56
-rw-r--r--src/lib/ecore_x/Ecore_X.h25
-rw-r--r--src/lib/ecore_x/Ecore_X_Atoms.h2
-rw-r--r--src/lib/ecore_x/ecore_x.c32
-rw-r--r--src/lib/ecore_x/ecore_x_atoms_decl.h4
-rw-r--r--src/lib/ecore_x/ecore_x_events.c182
-rw-r--r--src/lib/ecore_x/ecore_x_gesture.c108
-rw-r--r--src/lib/ecore_x/ecore_x_private.h13
-rw-r--r--src/lib/ecore_x/ecore_x_xi2.c179
-rw-r--r--src/lib/ecore_x/meson.build4
-rw-r--r--src/lib/ector/ector_buffer.eo10
-rw-r--r--src/lib/ector/ector_renderer.eo2
-rw-r--r--src/lib/ector/ector_surface.eo6
-rw-r--r--src/lib/ector/gl/ector_gl_surface.eo2
-rw-r--r--src/lib/ector/software/ector_renderer_software_shape.c4
-rw-r--r--src/lib/ector/software/ector_software_buffer.c11
-rw-r--r--src/lib/ector/software/ector_software_buffer_base.eo1
-rw-r--r--src/lib/ector/software/ector_software_rasterizer.c44
-rw-r--r--src/lib/ector/software/ector_software_surface.c9
-rw-r--r--src/lib/ector/software/ector_software_surface.eo2
-rw-r--r--src/lib/edje/Efl_Layout.h3
-rw-r--r--src/lib/edje/edje_box_layout.c5
-rw-r--r--src/lib/edje/edje_cache.c37
-rw-r--r--src/lib/edje/edje_calc.c62
-rw-r--r--src/lib/edje/edje_callbacks.c3
-rw-r--r--src/lib/edje/edje_data.c2
-rw-r--r--src/lib/edje/edje_entry.c48
-rw-r--r--src/lib/edje/edje_legacy.c254
-rw-r--r--src/lib/edje/edje_load.c50
-rw-r--r--src/lib/edje/edje_part_invalid.c15
-rw-r--r--src/lib/edje/edje_part_text.c207
-rw-r--r--src/lib/edje/edje_private.h50
-rw-r--r--src/lib/edje/edje_program.c19
-rw-r--r--src/lib/edje/edje_smart.c8
-rw-r--r--src/lib/edje/edje_text.c30
-rw-r--r--src/lib/edje/edje_textblock.c311
-rw-r--r--src/lib/edje/edje_textblock_styles.c10
-rw-r--r--src/lib/edje/edje_util.c27
-rw-r--r--src/lib/edje/efl_canvas_layout.eo2
-rw-r--r--src/lib/edje/efl_canvas_layout_eo.legacy.c4
-rw-r--r--src/lib/edje/efl_canvas_layout_part_invalid.eo16
-rw-r--r--src/lib/edje/efl_canvas_layout_part_text.eo19
-rw-r--r--src/lib/eet/Eet.h23
-rw-r--r--src/lib/eeze/eeze_sensor.c1
-rw-r--r--src/lib/efl/Efl.h25
-rw-r--r--src/lib/efl/interfaces/efl_cached_item.eo17
-rw-r--r--src/lib/efl/interfaces/efl_common_internal.h169
-rw-r--r--src/lib/efl/interfaces/efl_gfx_arrangement.eo15
-rw-r--r--src/lib/efl/interfaces/efl_gfx_frame_controller.eo19
-rw-r--r--src/lib/efl/interfaces/efl_gfx_hint.eo16
-rw-r--r--src/lib/efl/interfaces/efl_gfx_image.eo4
-rw-r--r--src/lib/efl/interfaces/efl_gfx_stack.eo8
-rw-r--r--src/lib/efl/interfaces/efl_gfx_types.eot11
-rw-r--r--src/lib/efl/interfaces/efl_gfx_view.eo5
-rw-r--r--src/lib/efl/interfaces/efl_input_text.eo274
-rw-r--r--src/lib/efl/interfaces/efl_interfaces_main.c7
-rw-r--r--src/lib/efl/interfaces/efl_interpolator.eo21
-rw-r--r--src/lib/efl/interfaces/efl_observable.eo2
-rw-r--r--src/lib/efl/interfaces/efl_text.eo4
-rw-r--r--src/lib/efl/interfaces/efl_text_annotate.eo137
-rw-r--r--src/lib/efl/interfaces/efl_text_cursor.eo246
-rw-r--r--src/lib/efl/interfaces/efl_text_font.eo30
-rw-r--r--src/lib/efl/interfaces/efl_text_format.eo6
-rw-r--r--src/lib/efl/interfaces/efl_text_markup_interactive.eo25
-rw-r--r--src/lib/efl/interfaces/efl_text_types.eot12
-rw-r--r--src/lib/efl/interfaces/efl_ui_factory.eo21
-rw-r--r--src/lib/efl/interfaces/efl_ui_scrollable.eo104
-rw-r--r--src/lib/efl/interfaces/efl_ui_text_selectable.eo13
-rw-r--r--src/lib/efl/interfaces/efl_ui_view_factory.eo2
-rw-r--r--src/lib/efl/interfaces/meson.build14
-rw-r--r--src/lib/efl_mono/efl_custom_exports_mono.c26
-rw-r--r--src/lib/efreet/efreet_cache.c2
-rw-r--r--src/lib/efreet/efreet_desktop.c12
-rw-r--r--src/lib/efreet/efreet_desktop_command.c15
-rw-r--r--src/lib/eina/eina_config.h.in150
-rw-r--r--src/lib/eina/eina_counter.c4
-rw-r--r--src/lib/eina/eina_cow.h18
-rw-r--r--src/lib/eina/eina_evlog.c6
-rw-r--r--src/lib/eina/eina_file.c88
-rw-r--r--src/lib/eina/eina_file.h17
-rw-r--r--src/lib/eina/eina_file_common.c4
-rw-r--r--src/lib/eina/eina_hash.h4
-rw-r--r--src/lib/eina/eina_inline_cpu.x26
-rw-r--r--src/lib/eina/eina_inline_mempool.x14
-rw-r--r--src/lib/eina/eina_inline_value.x6
-rw-r--r--src/lib/eina/eina_inlist.h8
-rw-r--r--src/lib/eina/eina_list.c12
-rw-r--r--src/lib/eina/eina_list.h40
-rw-r--r--src/lib/eina/eina_matrix.c14
-rw-r--r--src/lib/eina/eina_mempool.c3
-rw-r--r--src/lib/eina/eina_mempool.h23
-rw-r--r--src/lib/eina/eina_module.c8
-rw-r--r--src/lib/eina/eina_prefix.c4
-rw-r--r--src/lib/eina/eina_rbtree.c2
-rw-r--r--src/lib/eina/eina_rectangle.h21
-rw-r--r--src/lib/eina/eina_thread_queue.c103
-rw-r--r--src/lib/eina/eina_value.c2
-rw-r--r--src/lib/eina/eina_vector.h1
-rw-r--r--src/lib/eio/efl_io_manager.eo2
-rw-r--r--src/lib/eldbus/eldbus_model_arguments.eo2
-rw-r--r--src/lib/eldbus/eldbus_model_proxy.c20
-rw-r--r--src/lib/eldbus/eldbus_types.eot4
-rw-r--r--src/lib/elementary/Efl_Ui.h22
-rw-r--r--src/lib/elementary/Elementary.h4
-rw-r--r--src/lib/elementary/Elementary_Options.h.in4
-rw-r--r--src/lib/elementary/efl_access_action.eo2
-rw-r--r--src/lib/elementary/efl_access_object.eo4
-rw-r--r--src/lib/elementary/efl_access_text.eo6
-rw-r--r--src/lib/elementary/efl_datetime_manager.c8
-rw-r--r--src/lib/elementary/efl_page_indicator_icon.c191
-rw-r--r--src/lib/elementary/efl_text_interactive.eo42
-rw-r--r--src/lib/elementary/efl_ui.eot18
-rw-r--r--src/lib/elementary/efl_ui_alert_popup.c38
-rw-r--r--src/lib/elementary/efl_ui_alert_popup.eo3
-rw-r--r--src/lib/elementary/efl_ui_alert_popup_part_title.eo (renamed from src/lib/elementary/efl_ui_alert_popup_part.eo)2
-rw-r--r--src/lib/elementary/efl_ui_animation_view.c31
-rw-r--r--src/lib/elementary/efl_ui_animation_view.eo19
-rw-r--r--src/lib/elementary/efl_ui_caching_factory.c4
-rw-r--r--src/lib/elementary/efl_ui_caching_factory.eo7
-rw-r--r--src/lib/elementary/efl_ui_check.c3
-rw-r--r--src/lib/elementary/efl_ui_clock.c6
-rw-r--r--src/lib/elementary/efl_ui_collection.c11
-rw-r--r--src/lib/elementary/efl_ui_collection.eo16
-rw-r--r--src/lib/elementary/efl_ui_collection_view.c162
-rw-r--r--src/lib/elementary/efl_ui_collection_view.eo12
-rw-r--r--src/lib/elementary/efl_ui_focus_manager.eo4
-rw-r--r--src/lib/elementary/efl_ui_format.eo2
-rw-r--r--src/lib/elementary/efl_ui_grid.eo2
-rw-r--r--src/lib/elementary/efl_ui_grid_view.eo4
-rw-r--r--src/lib/elementary/efl_ui_internal_text_interactive.c1276
-rw-r--r--src/lib/elementary/efl_ui_internal_text_interactive.eo22
-rw-r--r--src/lib/elementary/efl_ui_internal_text_scroller.c22
-rw-r--r--src/lib/elementary/efl_ui_internal_text_scroller.eo6
-rw-r--r--src/lib/elementary/efl_ui_item.c3
-rw-r--r--src/lib/elementary/efl_ui_layout.c20
-rw-r--r--src/lib/elementary/efl_ui_list.eo2
-rw-r--r--src/lib/elementary/efl_ui_list_view.eo4
-rw-r--r--src/lib/elementary/efl_ui_multi_selectable.eo36
-rw-r--r--src/lib/elementary/efl_ui_multi_selectable_async.eo63
-rw-r--r--src/lib/elementary/efl_ui_multi_selectable_index_range.eo53
-rw-r--r--src/lib/elementary/efl_ui_multi_selectable_object_range.eo46
-rw-r--r--src/lib/elementary/efl_ui_pager.c27
-rw-r--r--src/lib/elementary/efl_ui_pager.eo10
-rw-r--r--src/lib/elementary/efl_ui_pan.c4
-rw-r--r--src/lib/elementary/efl_ui_popup.c8
-rw-r--r--src/lib/elementary/efl_ui_popup.eo1
-rw-r--r--src/lib/elementary/efl_ui_position_manager_data_access_v1.eo1
-rw-r--r--src/lib/elementary/efl_ui_position_manager_grid.c37
-rw-r--r--src/lib/elementary/efl_ui_position_manager_list.c60
-rw-r--r--src/lib/elementary/efl_ui_radio_box.eo2
-rw-r--r--src/lib/elementary/efl_ui_relative_container.c (renamed from src/lib/elementary/efl_ui_relative_layout.c)198
-rw-r--r--src/lib/elementary/efl_ui_relative_container.eo94
-rw-r--r--src/lib/elementary/efl_ui_relative_container_private.h (renamed from src/lib/elementary/efl_ui_relative_layout_private.h)68
-rw-r--r--src/lib/elementary/efl_ui_relative_layout.eo73
-rw-r--r--src/lib/elementary/efl_ui_scroll_manager.eo12
-rw-r--r--src/lib/elementary/efl_ui_scroller.c16
-rw-r--r--src/lib/elementary/efl_ui_scroller.eo1
-rw-r--r--src/lib/elementary/efl_ui_select_model.c24
-rw-r--r--src/lib/elementary/efl_ui_select_model.eo16
-rw-r--r--src/lib/elementary/efl_ui_selection_manager.c5
-rw-r--r--src/lib/elementary/efl_ui_slider.c48
-rw-r--r--src/lib/elementary/efl_ui_spotlight_container.c167
-rw-r--r--src/lib/elementary/efl_ui_spotlight_container.eo31
-rw-r--r--src/lib/elementary/efl_ui_spotlight_indicator_icon.c54
-rw-r--r--src/lib/elementary/efl_ui_spotlight_indicator_icon.eo1
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager.eo11
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager_plain.c41
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager_plain.eo2
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager_scroll.c58
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager_scroll.eo2
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager_stack.c215
-rw-r--r--src/lib/elementary/efl_ui_spotlight_manager_stack.eo2
-rw-r--r--src/lib/elementary/efl_ui_stack.c27
-rw-r--r--src/lib/elementary/efl_ui_stack.eo10
-rw-r--r--src/lib/elementary/efl_ui_table.c2
-rw-r--r--src/lib/elementary/efl_ui_table_static.eo8
-rw-r--r--src/lib/elementary/efl_ui_tags.c8
-rw-r--r--src/lib/elementary/efl_ui_text.eo356
-rw-r--r--src/lib/elementary/efl_ui_text_async.eo9
-rw-r--r--src/lib/elementary/efl_ui_text_editable.eo8
-rw-r--r--src/lib/elementary/efl_ui_text_factory_emoticons.c2
-rw-r--r--src/lib/elementary/efl_ui_text_factory_emoticons.eo4
-rw-r--r--src/lib/elementary/efl_ui_text_factory_fallback.c8
-rw-r--r--src/lib/elementary/efl_ui_text_factory_fallback.eo4
-rw-r--r--src/lib/elementary/efl_ui_text_factory_images.c2
-rw-r--r--src/lib/elementary/efl_ui_text_factory_images.eo4
-rw-r--r--src/lib/elementary/efl_ui_textbox.c (renamed from src/lib/elementary/efl_ui_text.c)1307
-rw-r--r--src/lib/elementary/efl_ui_textbox.eo146
-rw-r--r--src/lib/elementary/efl_ui_textbox_async.eo9
-rw-r--r--src/lib/elementary/efl_ui_view_model.c3
-rw-r--r--src/lib/elementary/efl_ui_view_model.eo4
-rw-r--r--src/lib/elementary/efl_ui_widget.c25
-rw-r--r--src/lib/elementary/efl_ui_widget_factory.c14
-rw-r--r--src/lib/elementary/efl_ui_win.c4
-rw-r--r--src/lib/elementary/efl_ui_win.eo2
-rw-r--r--src/lib/elementary/elc_fileselector_entry.c12
-rw-r--r--src/lib/elementary/elc_hoversel.c9
-rw-r--r--src/lib/elementary/elc_naviframe.c4
-rw-r--r--src/lib/elementary/elm_code_file.c11
-rw-r--r--src/lib/elementary/elm_code_widget.c1
-rw-r--r--src/lib/elementary/elm_config.c27
-rw-r--r--src/lib/elementary/elm_deprecated.h17
-rw-r--r--src/lib/elementary/elm_entry.c29
-rw-r--r--src/lib/elementary/elm_general.eot1
-rw-r--r--src/lib/elementary/elm_gengrid.c1
-rw-r--r--src/lib/elementary/elm_genlist.c175
-rw-r--r--src/lib/elementary/elm_interface_scrollable.c61
-rw-r--r--src/lib/elementary/elm_interface_scrollable.eo3
-rw-r--r--src/lib/elementary/elm_label.c18
-rw-r--r--src/lib/elementary/elm_label_eo.c2
-rw-r--r--src/lib/elementary/elm_list.c3
-rw-r--r--src/lib/elementary/elm_main.c21
-rw-r--r--src/lib/elementary/elm_map.c3
-rw-r--r--src/lib/elementary/elm_need.h15
-rw-r--r--src/lib/elementary/elm_panel.c1
-rw-r--r--src/lib/elementary/elm_priv.h11
-rw-r--r--src/lib/elementary/elm_scroller.c1
-rw-r--r--src/lib/elementary/elm_slider.c58
-rw-r--r--src/lib/elementary/elm_toolbar.c1
-rw-r--r--src/lib/elementary/elm_widget_genlist.h3
-rw-r--r--src/lib/elementary/elm_widget_layout.h1
-rw-r--r--src/lib/elementary/meson.build25
-rw-r--r--src/lib/elocation/Elocation.h433
-rw-r--r--src/lib/elocation/elocation.c1414
-rw-r--r--src/lib/elocation/elocation_private.h186
-rw-r--r--src/lib/elocation/gen/eldbus_geo_clue2_client.c448
-rw-r--r--src/lib/elocation/gen/eldbus_geo_clue2_client.h36
-rw-r--r--src/lib/elocation/gen/eldbus_geo_clue2_location.c246
-rw-r--r--src/lib/elocation/gen/eldbus_geo_clue2_location.h22
-rw-r--r--src/lib/elocation/gen/eldbus_geo_clue2_manager.c209
-rw-r--r--src/lib/elocation/gen/eldbus_geo_clue2_manager.h23
-rw-r--r--src/lib/elocation/gen/eldbus_utils.h24
-rw-r--r--src/lib/elocation/gen/meson.build5
-rw-r--r--src/lib/elocation/gen/org.freedesktop.GeoClue2.xml199
-rw-r--r--src/lib/elocation/meson.build28
-rw-r--r--src/lib/embryo/embryo_amx.c4
-rw-r--r--src/lib/embryo/embryo_str.c4
-rw-r--r--src/lib/embryo/embryo_time.c4
-rw-r--r--src/lib/emile/emile_image.c14
-rw-r--r--src/lib/emotion/emotion_modules.c3
-rw-r--r--src/lib/emotion/emotion_smart.c1
-rw-r--r--src/lib/eo/Eo.h50
-rw-r--r--src/lib/eo/eo.c3
-rw-r--r--src/lib/eo/eo_base_class.c624
-rw-r--r--src/lib/eolian/database_validate.c18
-rw-r--r--src/lib/eolian/eo_parser.c8
-rw-r--r--src/lib/eolian/eolian_aux.c1
-rw-r--r--src/lib/eolian/eolian_database.c1
-rw-r--r--src/lib/eolian_cxx/Eolian_Cxx.hh15
-rw-r--r--src/lib/eolian_cxx/grammar/address_of.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/alternative.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/attribute_conditional.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/attribute_reorder.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/attribute_replace.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/attributes.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/base_class_definition.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/blacklist.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/c_type.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/case.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/class_declaration.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/class_definition.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/class_implementation.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/container.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/context.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/converting_argument.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/eps.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/function_declaration.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/function_definition.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/generator.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/header.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/header_guards.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/header_include_directive.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/html_escaped_string.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/ignore_warning.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/impl_header.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/implementation_include_directive.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/indentation.hpp26
-rw-r--r--src/lib/eolian_cxx/grammar/integral.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/keyword.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/klass_def.hpp105
-rw-r--r--src/lib/eolian_cxx/grammar/kleene.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/list.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/meta.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/namespace.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/parameter.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/part_declaration.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/part_implementation.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/qualifier_def.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/sequence.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/string.hpp17
-rw-r--r--src/lib/eolian_cxx/grammar/type.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/type_function_declaration.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/type_impl.hpp15
-rw-r--r--src/lib/eolian_cxx/grammar/type_traits.hpp17
-rw-r--r--src/lib/eolian_cxx/grammar/types_definition.hpp15
-rw-r--r--src/lib/escape/Escape.h83
-rw-r--r--src/lib/escape/escape_libgen.c90
-rw-r--r--src/lib/escape/escape_libgen.h33
-rw-r--r--src/lib/escape/escape_mman.c67
-rw-r--r--src/lib/escape/escape_unistd.c184
-rw-r--r--src/lib/escape/escape_unistd.h108
-rw-r--r--src/lib/escape/sys/mman.h180
-rw-r--r--src/lib/evas/Efl_Canvas.h22
-rw-r--r--src/lib/evas/Evas.h3
-rw-r--r--src/lib/evas/Evas_Common.h41
-rw-r--r--src/lib/evas/Evas_Eo.h42
-rw-r--r--src/lib/evas/Evas_Internal.h170
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation.c51
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation.eo91
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_alpha.eo15
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group.c20
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group.eo24
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group_parallel.c14
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group_parallel.eo9
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group_sequential.c14
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_group_sequential.eo10
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_player.c444
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_player.eo62
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_player_private.h53
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_private.h4
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_rotate.c44
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_rotate.eo44
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_rotate_private.h9
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_scale.c134
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_scale.eo49
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_scale_private.h18
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_translate.c75
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_translate.eo32
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_translate_private.h10
-rw-r--r--src/lib/evas/canvas/efl_canvas_animation_types.eot9
-rw-r--r--src/lib/evas/canvas/efl_canvas_image.c22
-rw-r--r--src/lib/evas/canvas/efl_canvas_image.eo1
-rw-r--r--src/lib/evas/canvas/efl_canvas_object.eo6
-rw-r--r--src/lib/evas/canvas/efl_canvas_object_animation.c214
-rw-r--r--src/lib/evas/canvas/efl_canvas_object_animation.eo60
-rw-r--r--src/lib/evas/canvas/efl_canvas_pointer.eo (renamed from src/lib/efl/interfaces/efl_canvas_pointer.eo)0
-rw-r--r--src/lib/evas/canvas/efl_canvas_scene.eo (renamed from src/lib/efl/interfaces/efl_canvas_scene.eo)0
-rw-r--r--src/lib/evas/canvas/efl_canvas_text.eo324
-rw-r--r--src/lib/evas/canvas/efl_canvas_text_eo.legacy.c66
-rw-r--r--src/lib/evas/canvas/efl_canvas_textblock.eo564
-rw-r--r--src/lib/evas/canvas/efl_canvas_textblock_eo.legacy.c72
-rw-r--r--src/lib/evas/canvas/efl_canvas_textblock_eo.legacy.h (renamed from src/lib/evas/canvas/efl_canvas_text_eo.legacy.h)36
-rw-r--r--src/lib/evas/canvas/efl_canvas_textblock_factory.eo (renamed from src/lib/evas/canvas/efl_canvas_text_factory.eo)2
-rw-r--r--src/lib/evas/canvas/efl_canvas_textblock_internal.h315
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_container.c20
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_gradient_linear.c4
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_gradient_radial.c4
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_node.c2
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_object.c128
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_object.eo1
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_object_eo.legacy.h2
-rw-r--r--src/lib/evas/canvas/efl_input_device.c (renamed from src/lib/efl/interfaces/efl_input_device.c)108
-rw-r--r--src/lib/evas/canvas/efl_input_device.eo (renamed from src/lib/efl/interfaces/efl_input_device.eo)0
-rw-r--r--src/lib/evas/canvas/efl_input_event.c4
-rw-r--r--src/lib/evas/canvas/efl_input_focus.c5
-rw-r--r--src/lib/evas/canvas/efl_input_hold.c3
-rw-r--r--src/lib/evas/canvas/efl_input_key.c3
-rw-r--r--src/lib/evas/canvas/efl_input_pointer.c3
-rw-r--r--src/lib/evas/canvas/efl_input_types.eot (renamed from src/lib/efl/interfaces/efl_input_types.eot)0
-rw-r--r--src/lib/evas/canvas/efl_text_attribute_factory.c133
-rw-r--r--src/lib/evas/canvas/efl_text_attribute_factory.eo37
-rw-r--r--src/lib/evas/canvas/efl_text_cursor.c478
-rw-r--r--src/lib/evas/canvas/efl_text_cursor.eo235
-rw-r--r--src/lib/evas/canvas/evas_callbacks.c19
-rw-r--r--src/lib/evas/canvas/evas_device.c100
-rw-r--r--src/lib/evas/canvas/evas_events.c11
-rw-r--r--src/lib/evas/canvas/evas_events_legacy.c3
-rw-r--r--src/lib/evas/canvas/evas_focus.c4
-rw-r--r--src/lib/evas/canvas/evas_font_dir.c49
-rw-r--r--src/lib/evas/canvas/evas_image_private.h5
-rw-r--r--src/lib/evas/canvas/evas_key_grab.c3
-rw-r--r--src/lib/evas/canvas/evas_main.c6
-rw-r--r--src/lib/evas/canvas/evas_object_image.c31
-rw-r--r--src/lib/evas/canvas/evas_object_main.c108
-rw-r--r--src/lib/evas/canvas/evas_object_text.c82
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c3028
-rw-r--r--src/lib/evas/canvas/evas_object_textgrid.c46
-rw-r--r--src/lib/evas/canvas/evas_text_eo.c6
-rw-r--r--src/lib/evas/canvas/evas_textblock_hyphenation.x4
-rw-r--r--src/lib/evas/canvas/evas_textblock_legacy.h114
-rw-r--r--src/lib/evas/canvas/evas_textgrid_eo.c16
-rw-r--r--src/lib/evas/canvas/evas_textgrid_eo.h2
-rw-r--r--src/lib/evas/canvas/evas_textgrid_eo.legacy.h2
-rw-r--r--src/lib/evas/canvas/evas_vg_private.h9
-rw-r--r--src/lib/evas/canvas/meson.build21
-rw-r--r--src/lib/evas/common/evas_common_generic_cache.c2
-rw-r--r--src/lib/evas/common/evas_font.h3
-rw-r--r--src/lib/evas/common/evas_font_query.c13
-rw-r--r--src/lib/evas/common/evas_map_image.c8
-rw-r--r--src/lib/evas/file/evas_module.c25
-rw-r--r--src/lib/evas/filters/evas_filter.c22
-rw-r--r--src/lib/evas/filters/evas_filter_parser.c39
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_manager.c9
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_manager.eo2
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_private.h2
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_touch.c9
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_touch.eo5
-rw-r--r--src/lib/evas/gesture/efl_canvas_gesture_zoom.eo2
-rw-r--r--src/lib/evas/include/evas_common_private.h9
-rw-r--r--src/lib/evas/include/evas_filter.h12
-rw-r--r--src/lib/evas/include/evas_private.h22
-rw-r--r--src/lib/evas/meson.build166
-rw-r--r--src/lib/evas/software_generic/filters/meson.build1
-rw-r--r--src/lib/evas/vg/evas_vg_cache.c210
-rw-r--r--src/lib/evas_goal/empty.c0
-rw-r--r--src/lib/evas_goal/meson.build179
464 files changed, 12403 insertions, 12799 deletions
diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h
index cfc6dd7..7818faf 100644
--- a/src/lib/ecore/Ecore.h
+++ b/src/lib/ecore/Ecore.h
@@ -315,9 +315,7 @@
315# include <sys/siginfo.h> 315# include <sys/siginfo.h>
316#else 316#else
317# include <sys/time.h> 317# include <sys/time.h>
318# if !defined (EXOTIC_NO_SIGNAL) 318# include <signal.h>
319# include <signal.h>
320# endif
321#endif 319#endif
322 320
323#include <sys/types.h> 321#include <sys/types.h>
diff --git a/src/lib/ecore/Ecore_Common.h b/src/lib/ecore/Ecore_Common.h
index 8f1a99b..443a058 100644
--- a/src/lib/ecore/Ecore_Common.h
+++ b/src/lib/ecore/Ecore_Common.h
@@ -611,7 +611,7 @@ struct _Ecore_Event_Signal_User
611 int number; /**< The signal number. Either 1 or 2 */ 611 int number; /**< The signal number. Either 1 or 2 */
612 void *ext_data; /**< Extension data - not used */ 612 void *ext_data; /**< Extension data - not used */
613 613
614#if !defined (_WIN32) && !defined (__lv2ppu__) && !defined (EXOTIC_NO_SIGNAL) 614#if !defined (_WIN32) && !defined (__lv2ppu__)
615 siginfo_t data; /**< Signal info */ 615 siginfo_t data; /**< Signal info */
616#endif 616#endif
617}; 617};
@@ -624,7 +624,7 @@ struct _Ecore_Event_Signal_Hup
624{ 624{
625 void *ext_data; /**< Extension data - not used */ 625 void *ext_data; /**< Extension data - not used */
626 626
627#if !defined (_WIN32) && !defined (__lv2ppu__) && !defined (EXOTIC_NO_SIGNAL) 627#if !defined (_WIN32) && !defined (__lv2ppu__)
628 siginfo_t data; /**< Signal info */ 628 siginfo_t data; /**< Signal info */
629#endif 629#endif
630}; 630};
@@ -640,7 +640,7 @@ struct _Ecore_Event_Signal_Exit
640 Eina_Bool terminate : 1; /**< Set if the exit request was a terminate signal */ 640 Eina_Bool terminate : 1; /**< Set if the exit request was a terminate signal */
641 void *ext_data; /**< Extension data - not used */ 641 void *ext_data; /**< Extension data - not used */
642 642
643#if !defined (_WIN32) && !defined (__lv2ppu__) && !defined (EXOTIC_NO_SIGNAL) 643#if !defined (_WIN32) && !defined (__lv2ppu__)
644 siginfo_t data; /**< Signal info */ 644 siginfo_t data; /**< Signal info */
645#endif 645#endif
646}; 646};
@@ -653,7 +653,7 @@ struct _Ecore_Event_Signal_Power
653{ 653{
654 void *ext_data; /**< Extension data - not used */ 654 void *ext_data; /**< Extension data - not used */
655 655
656#if !defined (_WIN32) && !defined (__lv2ppu__) && !defined (EXOTIC_NO_SIGNAL) 656#if !defined (_WIN32) && !defined (__lv2ppu__)
657 siginfo_t data; /**< Signal info */ 657 siginfo_t data; /**< Signal info */
658#endif 658#endif
659}; 659};
@@ -666,7 +666,7 @@ struct _Ecore_Event_Signal_Realtime
666{ 666{
667 int num; /**< The realtime signal's number */ 667 int num; /**< The realtime signal's number */
668 668
669#if !defined (_WIN32) && !defined (__lv2ppu__) && !defined (EXOTIC_NO_SIGNAL) 669#if !defined (_WIN32) && !defined (__lv2ppu__)
670 siginfo_t data; /**< Signal info */ 670 siginfo_t data; /**< Signal info */
671#endif 671#endif
672}; 672};
@@ -1071,7 +1071,7 @@ struct _Ecore_Exe_Event_Del
1071 Eina_Bool exited : 1; /**< Set to 1 if the process exited of its own accord */ 1071 Eina_Bool exited : 1; /**< Set to 1 if the process exited of its own accord */
1072 Eina_Bool signalled : 1; /**< Set to 1 if the process exited due to uncaught signal */ 1072 Eina_Bool signalled : 1; /**< Set to 1 if the process exited due to uncaught signal */
1073 void *ext_data; /**< Extension data - not used */ 1073 void *ext_data; /**< Extension data - not used */
1074#if !defined (_WIN32) && !defined (__lv2ppu__) && !defined (EXOTIC_NO_SIGNAL) 1074#if !defined (_WIN32) && !defined (__lv2ppu__)
1075 siginfo_t data; /**< Signal info */ 1075 siginfo_t data; /**< Signal info */
1076#endif 1076#endif
1077}; 1077};
diff --git a/src/lib/ecore/Efl_Core.h b/src/lib/ecore/Efl_Core.h
index c735b33..0178299 100644
--- a/src/lib/ecore/Efl_Core.h
+++ b/src/lib/ecore/Efl_Core.h
@@ -45,9 +45,7 @@
45# include <sys/siginfo.h> 45# include <sys/siginfo.h>
46#else 46#else
47# include <sys/time.h> 47# include <sys/time.h>
48# if !defined (EXOTIC_NO_SIGNAL) 48# include <signal.h>
49# include <signal.h>
50# endif
51#endif 49#endif
52 50
53#include <sys/types.h> 51#include <sys/types.h>
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index b2ca8aa..3110c5e 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -275,9 +275,7 @@ ecore_init(void)
275 if (!_ecore_event_init()) goto shutdown_event; 275 if (!_ecore_event_init()) goto shutdown_event;
276 276
277 _ecore_signal_init(); 277 _ecore_signal_init();
278#ifndef HAVE_EXOTIC
279 _ecore_exe_init(); 278 _ecore_exe_init();
280#endif
281 _ecore_thread_init(); 279 _ecore_thread_init();
282 _ecore_job_init(); 280 _ecore_job_init();
283 _ecore_time_init(); 281 _ecore_time_init();
@@ -434,9 +432,7 @@ ecore_shutdown(void)
434 eina_lock_free(&_thread_feedback_mutex); 432 eina_lock_free(&_thread_feedback_mutex);
435 eina_lock_free(&_thread_id_lock); 433 eina_lock_free(&_thread_id_lock);
436 434
437#ifndef HAVE_EXOTIC
438 _ecore_exe_shutdown(); 435 _ecore_exe_shutdown();
439#endif
440 _ecore_event_shutdown(); 436 _ecore_event_shutdown();
441 _ecore_main_shutdown(); 437 _ecore_main_shutdown();
442 _ecore_signal_shutdown(); 438 _ecore_signal_shutdown();
diff --git a/src/lib/ecore/ecore_app.c b/src/lib/ecore/ecore_app.c
index a3d5deb..605f046 100644
--- a/src/lib/ecore/ecore_app.c
+++ b/src/lib/ecore/ecore_app.c
@@ -17,8 +17,10 @@ ecore_app_args_set(int argc,
17{ 17{
18 EINA_MAIN_LOOP_CHECK_RETURN; 18 EINA_MAIN_LOOP_CHECK_RETURN;
19 19
20 if ((argc < 1) || 20 if ((argc < 1) || (!argv))
21 (!argv)) return; 21 {
22 if (argc || argv) return;
23 }
22 app_argc = argc; 24 app_argc = argc;
23 app_argv = (char **)argv; 25 app_argv = (char **)argv;
24} 26}
diff --git a/src/lib/ecore/ecore_events.c b/src/lib/ecore/ecore_events.c
index 76de86b..b0a6607 100644
--- a/src/lib/ecore/ecore_events.c
+++ b/src/lib/ecore/ecore_events.c
@@ -7,21 +7,6 @@
7#include "Ecore.h" 7#include "Ecore.h"
8#include "ecore_private.h" 8#include "ecore_private.h"
9 9
10typedef struct _Ecore_Future_Schedule_Entry
11{
12 Eina_Future_Schedule_Entry base;
13 Eina_Future_Scheduler_Cb cb;
14 Eina_Future *future;
15 Eina_Value value;
16} Ecore_Future_Schedule_Entry;
17
18//////
19// XXX: still using legacy ecore events
20static Eina_Bool shutting_down = EINA_FALSE;
21static Eina_Mempool *mp_future_schedule_entry = NULL;
22//
23//////
24
25static Ecore_Event_Message_Handler *_event_msg_handler = NULL; 10static Ecore_Event_Message_Handler *_event_msg_handler = NULL;
26 11
27EAPI Ecore_Event_Handler * 12EAPI Ecore_Event_Handler *
@@ -126,106 +111,6 @@ ecore_event_current_event_get(void)
126 return ecore_event_message_handler_current_event_get(_event_msg_handler); 111 return ecore_event_message_handler_current_event_get(_event_msg_handler);
127} 112}
128 113
129static void _future_dispatch_cb(void *data, const Efl_Event *ev EINA_UNUSED);
130static void _event_del_cb(void *data, const Efl_Event *ev);
131
132EFL_CALLBACKS_ARRAY_DEFINE(ecore_future_callbacks,
133 { EFL_LOOP_EVENT_IDLE_ENTER, _future_dispatch_cb },
134 { EFL_LOOP_EVENT_IDLE, _future_dispatch_cb },
135 { EFL_EVENT_DEL, _event_del_cb });
136
137static void
138_future_dispatch_cb(void *data, const Efl_Event *ev EINA_UNUSED)
139{
140 Efl_Loop_Future_Scheduler *loopsched = data;
141 Eina_List *entries = loopsched->future_entries;
142 Ecore_Future_Schedule_Entry *entry;
143
144 loopsched->future_entries = NULL;
145 efl_event_callback_array_del((Eo *) loopsched->loop, ecore_future_callbacks(), loopsched);
146
147 EINA_LIST_FREE(entries, entry)
148 {
149 entry->cb(entry->future, entry->value);
150 eina_mempool_free(mp_future_schedule_entry, entry);
151 }
152}
153
154static void
155_event_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
156{
157 Efl_Loop_Future_Scheduler *loopsched = data;
158 Eina_List *entries = loopsched->future_entries;
159 Ecore_Future_Schedule_Entry *entry;
160
161 loopsched->future_entries = NULL;
162 efl_event_callback_array_del((Eo *) loopsched->loop, ecore_future_callbacks(), loopsched);
163
164 EINA_LIST_FREE(entries, entry)
165 {
166 eina_future_cancel(entry->future);
167 eina_value_flush(&entry->value);
168 eina_mempool_free(mp_future_schedule_entry, entry);
169 }
170}
171
172static Eina_Future_Schedule_Entry *
173ecore_future_schedule(Eina_Future_Scheduler *sched,
174 Eina_Future_Scheduler_Cb cb,
175 Eina_Future *future,
176 Eina_Value value)
177{
178 Efl_Loop_Future_Scheduler *loopsched = (Efl_Loop_Future_Scheduler *)sched;
179 Ecore_Future_Schedule_Entry *entry;
180
181 entry = eina_mempool_malloc(mp_future_schedule_entry, sizeof(*entry));
182 EINA_SAFETY_ON_NULL_RETURN_VAL(entry, NULL);
183 entry->base.scheduler = sched;
184 entry->cb = cb;
185 entry->future = future;
186 entry->value = value;
187
188 if (!loopsched->future_entries)
189 efl_event_callback_array_add((Eo *) loopsched->loop, ecore_future_callbacks(), loopsched);
190
191 loopsched->future_entries = eina_list_append(loopsched->future_entries, entry);
192 return &entry->base;
193}
194
195static void
196ecore_future_recall(Eina_Future_Schedule_Entry *s_entry)
197{
198 Ecore_Future_Schedule_Entry *entry = (Ecore_Future_Schedule_Entry *)s_entry;
199 Efl_Loop_Future_Scheduler *loopsched;
200 Eina_List *lookup;
201
202 if (shutting_down) return;
203
204 loopsched = (Efl_Loop_Future_Scheduler *) entry->base.scheduler;
205
206 lookup = eina_list_data_find_list(loopsched->future_entries, entry);
207 if (!lookup) return;
208
209 loopsched->future_entries = eina_list_remove_list(loopsched->future_entries, lookup);
210 if (!loopsched->future_entries)
211 efl_event_callback_array_del((Eo *) loopsched->loop, ecore_future_callbacks(), loopsched);
212
213 eina_value_flush(&entry->value);
214 eina_mempool_free(mp_future_schedule_entry, entry);
215
216}
217
218static Eina_Future_Scheduler ecore_future_scheduler = {
219 .schedule = ecore_future_schedule,
220 .recall = ecore_future_recall,
221};
222
223Eina_Future_Scheduler *
224_ecore_event_future_scheduler_get(void)
225{
226 return &ecore_future_scheduler;
227}
228
229Eina_Bool 114Eina_Bool
230_ecore_event_init(void) 115_ecore_event_init(void)
231{ 116{
@@ -267,47 +152,12 @@ _ecore_event_init(void)
267 // ECORE_EVENT_COUNT 11 152 // ECORE_EVENT_COUNT 11
268 // no need to do as it was a count, nto an event 153 // no need to do as it was a count, nto an event
269 154
270 //////
271 // XXX: ecore future still using legacy...
272 shutting_down = EINA_FALSE;
273// ECORE_EV_FUTURE_ID = ecore_event_type_new();
274// future_handler = ecore_event_handler_add(ECORE_EV_FUTURE_ID, ecore_future_dispatched, NULL);
275// EINA_SAFETY_ON_NULL_GOTO(future_handler, err_handler);
276 //FIXME: Is 512 too high?
277 if (!mp_future_schedule_entry)
278 {
279 mp_future_schedule_entry = eina_mempool_add
280 (choice, "Ecore_Future_Event", NULL,
281 sizeof(Ecore_Future_Schedule_Entry), 512);
282 EINA_SAFETY_ON_NULL_GOTO(mp_future_schedule_entry, err_pool);
283 }
284 //
285 //////
286
287 return EINA_TRUE; 155 return EINA_TRUE;
288
289 err_pool:
290// XXX:
291// ecore_event_handler_del(future_handler);
292// future_handler = NULL;
293// err_handler:
294// ECORE_EV_FUTURE_ID = -1;
295 return EINA_FALSE;
296} 156}
297 157
298void 158void
299_ecore_event_shutdown(void) 159_ecore_event_shutdown(void)
300{ 160{
301 shutting_down = EINA_TRUE;
302
303 //////
304 // XXX: ecore future still using legacy...
305// ecore_event_handler_del(future_handler);
306// future_handler = NULL;
307// ECORE_EV_FUTURE_ID = -1;
308 //
309 //////
310
311 efl_loop_message_handler_message_clear(_event_msg_handler); 161 efl_loop_message_handler_message_clear(_event_msg_handler);
312 _event_msg_handler = NULL; 162 _event_msg_handler = NULL;
313} 163}
diff --git a/src/lib/ecore/ecore_exe_posix.c b/src/lib/ecore/ecore_exe_posix.c
index 6a0cc3b..44d9c73 100644
--- a/src/lib/ecore/ecore_exe_posix.c
+++ b/src/lib/ecore/ecore_exe_posix.c
@@ -364,23 +364,14 @@ _impl_ecore_exe_efl_object_finalize(Eo *obj, Ecore_Exe_Data *exe)
364 E_NO_ERRNO(result, close(statusPipe[0]), ok); 364 E_NO_ERRNO(result, close(statusPipe[0]), ok);
365 E_IF_NO_ERRNO(result, eina_file_close_on_exec(statusPipe[1], EINA_TRUE), ok) /* close on exec shows success */ 365 E_IF_NO_ERRNO(result, eina_file_close_on_exec(statusPipe[1], EINA_TRUE), ok) /* close on exec shows success */
366 { 366 {
367 int except[2] = { 0, -1 };
368
369 except[0] = statusPipe[1];
370 eina_file_close_from(3, except);
367 /* Run the actual command. */ 371 /* Run the actual command. */
368 _ecore_exe_exec_it(exe_cmd, flags); /* no return */ 372 _ecore_exe_exec_it(exe_cmd, flags); /* no return */
369 } 373 }
370 } 374 }
371
372 /* Something went 'orribly wrong. */
373 vfork_exec_errno = errno;
374
375 /* Close the pipes. */
376 if (flags & ECORE_EXE_PIPE_ERROR)
377 E_NO_ERRNO(result, close(errorPipe[1]), ok);
378 if (flags & ECORE_EXE_PIPE_READ)
379 E_NO_ERRNO(result, close(readPipe[1]), ok);
380 if (flags & ECORE_EXE_PIPE_WRITE)
381 E_NO_ERRNO(result, close(writePipe[0]), ok);
382 E_NO_ERRNO(result, close(statusPipe[1]), ok);
383
384 _exit(-1); 375 _exit(-1);
385 } 376 }
386 else /* parent */ 377 else /* parent */
diff --git a/src/lib/ecore/ecore_exe_ps3.c b/src/lib/ecore/ecore_exe_ps3.c
deleted file mode 100644
index 1ef1e81..0000000
--- a/src/lib/ecore/ecore_exe_ps3.c
+++ /dev/null
@@ -1,20 +0,0 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
5#ifdef HAVE_ESCAPE
6# include <Escape.h>
7#endif
8
9#include "Ecore.h"
10#include "ecore_private.h"
11
12void
13_ecore_exe_init(void)
14{
15}
16
17void
18_ecore_exe_shutdown(void)
19{
20}
diff --git a/src/lib/ecore/ecore_getopt.c b/src/lib/ecore/ecore_getopt.c
index f81df25..8dc1981 100644
--- a/src/lib/ecore/ecore_getopt.c
+++ b/src/lib/ecore/ecore_getopt.c
@@ -26,10 +26,6 @@
26 26
27#define _(x) dgettext("ecore", x) 27#define _(x) dgettext("ecore", x)
28 28
29#ifdef HAVE_EXOTIC
30# include <Exotic.h>
31#endif
32
33#include "Ecore.h" 29#include "Ecore.h"
34#include "Ecore_Getopt.h" 30#include "Ecore_Getopt.h"
35 31
diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c
index d352853..4023bfa 100644
--- a/src/lib/ecore/ecore_pipe.c
+++ b/src/lib/ecore/ecore_pipe.c
@@ -26,14 +26,6 @@
26# endif 26# endif
27#endif 27#endif
28 28
29#ifdef HAVE_ESCAPE
30# include <Escape.h>
31#endif
32
33#ifdef HAVE_EXOTIC
34# include <Exotic.h>
35#endif
36
37/* 29/*
38 * On Windows, pipe() is implemented with sockets. 30 * On Windows, pipe() is implemented with sockets.
39 * Contrary to Linux, Windows uses different functions 31 * Contrary to Linux, Windows uses different functions
diff --git a/src/lib/ecore/ecore_private.h b/src/lib/ecore/ecore_private.h
index de3b47b..e60c191 100644
--- a/src/lib/ecore/ecore_private.h
+++ b/src/lib/ecore/ecore_private.h
@@ -88,7 +88,6 @@ typedef struct _Ecore_Factorized_Idle Ecore_Factorized_Idle;
88typedef struct _Efl_Loop_Promise_Simple_Data Efl_Loop_Promise_Simple_Data; 88typedef struct _Efl_Loop_Promise_Simple_Data Efl_Loop_Promise_Simple_Data;
89 89
90typedef struct _Efl_Loop_Timer_Data Efl_Loop_Timer_Data; 90typedef struct _Efl_Loop_Timer_Data Efl_Loop_Timer_Data;
91typedef struct _Efl_Loop_Future_Scheduler Efl_Loop_Future_Scheduler;
92typedef struct _Efl_Loop_Data Efl_Loop_Data; 91typedef struct _Efl_Loop_Data Efl_Loop_Data;
93 92
94typedef struct _Efl_Task_Data Efl_Task_Data; 93typedef struct _Efl_Task_Data Efl_Task_Data;
@@ -104,21 +103,10 @@ struct _Message
104 Eina_Bool delete_me; 103 Eina_Bool delete_me;
105}; 104};
106 105
107struct _Efl_Loop_Future_Scheduler
108{
109 Eina_Future_Scheduler eina_future_scheduler;
110 const Eo *loop;
111 Efl_Loop_Data *loop_data;
112
113 Eina_List *future_entries;
114};
115
116struct _Efl_Loop_Data 106struct _Efl_Loop_Data
117{ 107{
118 double loop_time; 108 double loop_time;
119 109
120 Efl_Loop_Future_Scheduler future_scheduler;
121
122 Efl_Loop_Message_Handler *future_message_handler; 110 Efl_Loop_Message_Handler *future_message_handler;
123 111
124 Efl_Loop_Timer *poll_high; 112 Efl_Loop_Timer *poll_high;
@@ -147,6 +135,7 @@ struct _Efl_Loop_Data
147 Eina_List *thread_children; 135 Eina_List *thread_children;
148 136
149 Eina_Inlist *message_queue; 137 Eina_Inlist *message_queue;
138 Eina_Inlist *message_pending_queue;
150 unsigned int message_walking; 139 unsigned int message_walking;
151 140
152 unsigned int throttle; 141 unsigned int throttle;
@@ -314,8 +303,6 @@ void *_ecore_factorized_idle_del(Ecore_Idler *idler);
314void _ecore_factorized_idle_process(void *data, const Efl_Event *event); 303void _ecore_factorized_idle_process(void *data, const Efl_Event *event);
315void _ecore_factorized_idle_event_del(void *data, const Efl_Event *event); 304void _ecore_factorized_idle_event_del(void *data, const Efl_Event *event);
316 305
317Eina_Future_Scheduler *_ecore_event_future_scheduler_get(void);
318
319Eina_Bool _ecore_event_init(void); 306Eina_Bool _ecore_event_init(void);
320void _ecore_event_shutdown(void); 307void _ecore_event_shutdown(void);
321int _ecore_event_exist(void); 308int _ecore_event_exist(void);
@@ -369,7 +356,7 @@ _ecore_main_win32_handler_del(Eo *obj,
369void _ecore_main_content_clear(Eo *obj, Efl_Loop_Data *pd); 356void _ecore_main_content_clear(Eo *obj, Efl_Loop_Data *pd);
370void _ecore_main_shutdown(void); 357void _ecore_main_shutdown(void);
371 358
372#if defined (_WIN32) || defined (__lv2ppu__) || defined (HAVE_EXOTIC) 359#if defined (_WIN32) || defined (__lv2ppu__)
373static inline void _ecore_signal_shutdown(void) { } 360static inline void _ecore_signal_shutdown(void) { }
374 361
375static inline void _ecore_signal_init(void) { } 362static inline void _ecore_signal_init(void) { }
diff --git a/src/lib/ecore/ecore_time.c b/src/lib/ecore/ecore_time.c
index 31ffa71..f2afe0e 100644
--- a/src/lib/ecore/ecore_time.c
+++ b/src/lib/ecore/ecore_time.c
@@ -16,7 +16,7 @@
16#include "Ecore.h" 16#include "Ecore.h"
17#include "ecore_private.h" 17#include "ecore_private.h"
18 18
19#if defined (HAVE_CLOCK_GETTIME) || defined (EXOTIC_PROVIDE_CLOCK_GETTIME) 19#if defined (HAVE_CLOCK_GETTIME)
20static clockid_t _ecore_time_clock_id; 20static clockid_t _ecore_time_clock_id;
21static Eina_Bool _ecore_time_got_clock_id = EINA_FALSE; 21static Eina_Bool _ecore_time_got_clock_id = EINA_FALSE;
22#elif defined(__APPLE__) && defined(__MACH__) 22#elif defined(__APPLE__) && defined(__MACH__)
@@ -26,7 +26,7 @@ static double _ecore_time_clock_conversion = 1e-9;
26EAPI double 26EAPI double
27ecore_time_get(void) 27ecore_time_get(void)
28{ 28{
29#if defined (HAVE_CLOCK_GETTIME) || defined (EXOTIC_PROVIDE_CLOCK_GETTIME) 29#if defined (HAVE_CLOCK_GETTIME)
30 struct timespec t; 30 struct timespec t;
31 31
32 if (EINA_UNLIKELY(!_ecore_time_got_clock_id)) 32 if (EINA_UNLIKELY(!_ecore_time_got_clock_id))
@@ -82,7 +82,7 @@ ecore_loop_time_set(double t)
82void 82void
83_ecore_time_init(void) 83_ecore_time_init(void)
84{ 84{
85#if defined(HAVE_CLOCK_GETTIME) || defined(EXOTIC_PROVIDE_CLOCK_GETTIME) 85#if defined(HAVE_CLOCK_GETTIME)
86 struct timespec t; 86 struct timespec t;
87 87
88 if (_ecore_time_got_clock_id) return; 88 if (_ecore_time_got_clock_id) return;
diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c
index 96b1a13..5713313 100644
--- a/src/lib/ecore/ecore_timer.c
+++ b/src/lib/ecore/ecore_timer.c
@@ -15,6 +15,17 @@
15 15
16#define ECORE_TIMER_CHECK(obj) if (!efl_isa((obj), MY_CLASS)) return 16#define ECORE_TIMER_CHECK(obj) if (!efl_isa((obj), MY_CLASS)) return
17 17
18#define EFL_LOOP_TIMER_DATA_GET(o, td) \
19 Efl_Loop_Timer_Data *td = efl_data_scope_safe_get(o, EFL_LOOP_TIMER_CLASS)
20
21#define EFL_LOOP_TIMER_DATA_GET_OR_RETURN(o, ptr, ...) \
22 EFL_LOOP_TIMER_DATA_GET(o, ptr); \
23 if (EINA_UNLIKELY(!ptr)) \
24 { \
25 ERR("No data for timer %p", o); \
26 return __VA_ARGS__; \
27 }
28
18struct _Ecore_Timer_Legacy 29struct _Ecore_Timer_Legacy
19{ 30{
20 Ecore_Task_Cb func; 31 Ecore_Task_Cb func;
@@ -24,7 +35,7 @@ struct _Ecore_Timer_Legacy
24 Eina_Bool inside_call : 1; 35 Eina_Bool inside_call : 1;
25 Eina_Bool delete_me : 1; 36 Eina_Bool delete_me : 1;
26}; 37};
27 38typedef struct _Ecore_Timer_Legacy Ecore_Timer_Legacy;
28struct _Efl_Loop_Timer_Data 39struct _Efl_Loop_Timer_Data
29{ 40{
30 EINA_INLIST; 41 EINA_INLIST;
@@ -32,6 +43,7 @@ struct _Efl_Loop_Timer_Data
32 Eo *object; 43 Eo *object;
33 Eo *loop; 44 Eo *loop;
34 Efl_Loop_Data *loop_data; 45 Efl_Loop_Data *loop_data;
46 Ecore_Timer_Legacy *legacy;
35 47
36 double in; 48 double in;
37 double at; 49 double at;
@@ -47,8 +59,6 @@ struct _Efl_Loop_Timer_Data
47 Eina_Bool finalized : 1; 59 Eina_Bool finalized : 1;
48}; 60};
49 61
50typedef struct _Ecore_Timer_Legacy Ecore_Timer_Legacy;
51
52static void _efl_loop_timer_util_delay(Efl_Loop_Timer_Data *timer, double add); 62static void _efl_loop_timer_util_delay(Efl_Loop_Timer_Data *timer, double add);
53static void _efl_loop_timer_util_instanciate(Efl_Loop_Data *loop, Efl_Loop_Timer_Data *timer); 63static void _efl_loop_timer_util_instanciate(Efl_Loop_Data *loop, Efl_Loop_Timer_Data *timer);
54static void _efl_loop_timer_set(Efl_Loop_Timer_Data *timer, double at, double in); 64static void _efl_loop_timer_set(Efl_Loop_Timer_Data *timer, double at, double in);
@@ -82,7 +92,8 @@ _check_timer_event_catcher_add(void *data, const Efl_Event *event)
82 if (array[i].desc == EFL_LOOP_TIMER_EVENT_TIMER_TICK) 92 if (array[i].desc == EFL_LOOP_TIMER_EVENT_TIMER_TICK)
83 { 93 {
84 if (timer->listening++ > 0) return; 94 if (timer->listening++ > 0) return;
85 _efl_loop_timer_util_instanciate(timer->loop_data, timer); 95 if (timer->finalized)
96 _efl_loop_timer_util_instanciate(timer->loop_data, timer);
86 // No need to walk more than once per array as you can not del 97 // No need to walk more than once per array as you can not del
87 // a partial array 98 // a partial array
88 return; 99 return;
@@ -155,12 +166,19 @@ static void
155_ecore_timer_legacy_tick(void *data, const Efl_Event *event) 166_ecore_timer_legacy_tick(void *data, const Efl_Event *event)
156{ 167{
157 Ecore_Timer_Legacy *legacy = data; 168 Ecore_Timer_Legacy *legacy = data;
169 Eina_Bool inside_call = legacy->inside_call;
158 170
159 legacy->inside_call = 1; 171 legacy->inside_call = 1;
160 if (!_ecore_call_task_cb(legacy->func, (void *)legacy->data) || 172 if (!_ecore_call_task_cb(legacy->func, (void *)legacy->data) || legacy->delete_me)
161 legacy->delete_me) 173 {
162 efl_del(event->object); 174 legacy->delete_me = EINA_TRUE;
163 else legacy->inside_call = 0; 175 /* cannot destroy timer if recursing */
176 if (!inside_call)
177 efl_del(event->object);
178 }
179 /* only unset flag if not currently recursing */
180 else if (!inside_call)
181 legacy->inside_call = 0;
164} 182}
165 183
166EFL_CALLBACKS_ARRAY_DEFINE(legacy_timer, 184EFL_CALLBACKS_ARRAY_DEFINE(legacy_timer,
@@ -185,8 +203,9 @@ ecore_timer_add(double in, Ecore_Task_Cb func, const void *data)
185 legacy->data = data; 203 legacy->data = data;
186 timer = efl_add(MY_CLASS, efl_main_loop_get(), 204 timer = efl_add(MY_CLASS, efl_main_loop_get(),
187 efl_event_callback_array_add(efl_added, legacy_timer(), legacy), 205 efl_event_callback_array_add(efl_added, legacy_timer(), legacy),
188 efl_key_data_set(efl_added, "_legacy", legacy),
189 efl_loop_timer_interval_set(efl_added, in)); 206 efl_loop_timer_interval_set(efl_added, in));
207 EFL_LOOP_TIMER_DATA_GET_OR_RETURN(timer, td, NULL);
208 td->legacy = legacy;
190 return timer; 209 return timer;
191} 210}
192 211
@@ -208,24 +227,24 @@ ecore_timer_loop_add(double in, Ecore_Task_Cb func, const void *data)
208 legacy->data = data; 227 legacy->data = data;
209 timer = efl_add(MY_CLASS, efl_main_loop_get(), 228 timer = efl_add(MY_CLASS, efl_main_loop_get(),
210 efl_event_callback_array_add(efl_added, legacy_timer(), legacy), 229 efl_event_callback_array_add(efl_added, legacy_timer(), legacy),
211 efl_key_data_set(efl_added, "_legacy", legacy),
212 efl_loop_timer_loop_reset(efl_added), 230 efl_loop_timer_loop_reset(efl_added),
213 efl_loop_timer_interval_set(efl_added, in)); 231 efl_loop_timer_interval_set(efl_added, in));
232 EFL_LOOP_TIMER_DATA_GET_OR_RETURN(timer, td, NULL);
233 td->legacy = legacy;
214 return timer; 234 return timer;
215} 235}
216 236
217EAPI void * 237EAPI void *
218ecore_timer_del(Ecore_Timer *timer) 238ecore_timer_del(Ecore_Timer *timer)
219{ 239{
220 Ecore_Timer_Legacy *legacy;
221 void *data; 240 void *data;
222 241
223 if (!timer) return NULL; 242 if (!timer) return NULL;
224 EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL); 243 EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
225 244
226 legacy = efl_key_data_get(timer, "_legacy"); 245 EFL_LOOP_TIMER_DATA_GET(timer, td);
227 // If legacy == NULL, this means double free or something 246 // If legacy == NULL, this means double free or something
228 if (legacy == NULL) 247 if ((!td) || (!td->legacy))
229 { 248 {
230 // Just in case it is an Eo timer, but not a legacy one. 249 // Just in case it is an Eo timer, but not a legacy one.
231 ERR("You are trying to destroy a timer which seems dead already."); 250 ERR("You are trying to destroy a timer which seems dead already.");
@@ -233,8 +252,8 @@ ecore_timer_del(Ecore_Timer *timer)
233 return NULL; 252 return NULL;
234 } 253 }
235 254
236 data = (void *)legacy->data; 255 data = (void *)td->legacy->data;
237 if (legacy->inside_call) legacy->delete_me = EINA_TRUE; 256 if (td->legacy->inside_call) td->legacy->delete_me = EINA_TRUE;
238 else efl_del(timer); 257 else efl_del(timer);
239 return data; 258 return data;
240} 259}
@@ -471,8 +490,12 @@ _efl_loop_timer_efl_object_parent_set(Eo *obj, Efl_Loop_Timer_Data *pd, Efl_Obje
471 // Remove the timer from all possible pending list 490 // Remove the timer from all possible pending list
472 first = eina_inlist_first(EINA_INLIST_GET(pd)); 491 first = eina_inlist_first(EINA_INLIST_GET(pd));
473 if (first == pd->loop_data->timers) 492 if (first == pd->loop_data->timers)
474 pd->loop_data->timers = eina_inlist_remove 493 {
475 (pd->loop_data->timers, EINA_INLIST_GET(pd)); 494 /* if this timer is currently being processed, update the pointer here so it is not lost */
495 if (pd == pd->loop_data->timer_current)
496 pd->loop_data->timer_current = (Efl_Loop_Timer_Data*)EINA_INLIST_GET(pd)->next;
497 pd->loop_data->timers = eina_inlist_remove(pd->loop_data->timers, EINA_INLIST_GET(pd));
498 }
476 else if (first == pd->loop_data->suspended) 499 else if (first == pd->loop_data->suspended)
477 pd->loop_data->suspended = eina_inlist_remove 500 pd->loop_data->suspended = eina_inlist_remove
478 (pd->loop_data->suspended, EINA_INLIST_GET(pd)); 501 (pd->loop_data->suspended, EINA_INLIST_GET(pd));
@@ -565,7 +588,8 @@ _efl_loop_timer_next_get(Eo *obj, Efl_Loop_Data *pd)
565static inline void 588static inline void
566_efl_loop_timer_reschedule(Efl_Loop_Timer_Data *timer, double when) 589_efl_loop_timer_reschedule(Efl_Loop_Timer_Data *timer, double when)
567{ 590{
568 if (timer->frozen || efl_invalidated_get(timer->object)) return; 591 if (timer->frozen || efl_invalidated_get(timer->object) ||
592 (timer->legacy && timer->legacy->delete_me)) return;
569 593
570 if (timer->loop_data && 594 if (timer->loop_data &&
571 (EINA_INLIST_GET(timer)->next || EINA_INLIST_GET(timer)->prev)) 595 (EINA_INLIST_GET(timer)->next || EINA_INLIST_GET(timer)->prev))
@@ -641,14 +665,24 @@ _efl_loop_timer_expired_call(Eo *obj EINA_UNUSED, Efl_Loop_Data *pd, double when
641 665
642 efl_ref(timer->object); 666 efl_ref(timer->object);
643 eina_evlog("+timer", timer, 0.0, NULL); 667 eina_evlog("+timer", timer, 0.0, NULL);
668 /* this can remove timer from its inlist in the legacy codepath */
644 efl_event_callback_call(timer->object, EFL_LOOP_TIMER_EVENT_TIMER_TICK, NULL); 669 efl_event_callback_call(timer->object, EFL_LOOP_TIMER_EVENT_TIMER_TICK, NULL);
645 eina_evlog("-timer", timer, 0.0, NULL); 670 eina_evlog("-timer", timer, 0.0, NULL);
646 671
647 // may have changed in recursive main loops 672 // may have changed in recursive main loops
648 // this current timer can not die yet as we hold a reference on it 673 // this current timer can not die yet as we hold a reference on it
674 /* this is tricky: the current timer cannot be deleted, but it CAN be removed from its inlist,
675 * thus breaking timer processing
676 */
649 if (pd->timer_current) 677 if (pd->timer_current)
650 pd->timer_current = (Efl_Loop_Timer_Data *) 678 {
651 EINA_INLIST_GET(pd->timer_current)->next; 679 if (pd->timer_current == timer)
680 pd->timer_current = (Efl_Loop_Timer_Data *)EINA_INLIST_GET(pd->timer_current)->next;
681 /* assume this has otherwise been modified either due to recursive mainloop processing or
682 * the timer being removed from its inlist and carefully updating pd->timer_current in the
683 * process as only the most elite of engineers would think to do
684 */
685 }
652 _efl_loop_timer_reschedule(timer, when); 686 _efl_loop_timer_reschedule(timer, when);
653 efl_unref(timer->object); 687 efl_unref(timer->object);
654 } 688 }
diff --git a/src/lib/ecore/efl_accelerate_interpolator.c b/src/lib/ecore/efl_accelerate_interpolator.c
index 917c032..b2e1032 100644
--- a/src/lib/ecore/efl_accelerate_interpolator.c
+++ b/src/lib/ecore/efl_accelerate_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Accelerate_Interpolator_Data Efl_Accelerate_Interpolator_Dat
11 11
12struct _Efl_Accelerate_Interpolator_Data 12struct _Efl_Accelerate_Interpolator_Data
13{ 13{
14 double factor; 14 double slope;
15}; 15};
16 16
17EOLIAN static double 17EOLIAN static double
@@ -23,22 +23,22 @@ _efl_accelerate_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED
23 return progress; 23 return progress;
24 24
25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_ACCELERATE_FACTOR, 25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_ACCELERATE_FACTOR,
26 pd->factor, 0); 26 pd->slope, 0);
27} 27}
28 28
29EOLIAN static void 29EOLIAN static void
30_efl_accelerate_interpolator_factor_set(Eo *eo_obj EINA_UNUSED, 30_efl_accelerate_interpolator_slope_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Accelerate_Interpolator_Data *pd, 31 Efl_Accelerate_Interpolator_Data *pd,
32 double factor) 32 double slope)
33{ 33{
34 pd->factor = factor; 34 pd->slope = slope;
35} 35}
36 36
37EOLIAN static double 37EOLIAN static double
38_efl_accelerate_interpolator_factor_get(const Eo *eo_obj EINA_UNUSED, 38_efl_accelerate_interpolator_slope_get(const Eo *eo_obj EINA_UNUSED,
39 Efl_Accelerate_Interpolator_Data *pd EINA_UNUSED) 39 Efl_Accelerate_Interpolator_Data *pd EINA_UNUSED)
40{ 40{
41 return pd->factor; 41 return pd->slope;
42} 42}
43 43
44EOLIAN static Efl_Object * 44EOLIAN static Efl_Object *
@@ -47,7 +47,7 @@ _efl_accelerate_interpolator_efl_object_constructor(Eo *eo_obj,
47{ 47{
48 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 48 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
49 49
50 pd->factor = 1.0; 50 pd->slope = 1.0;
51 51
52 return eo_obj; 52 return eo_obj;
53} 53}
diff --git a/src/lib/ecore/efl_accelerate_interpolator.eo b/src/lib/ecore/efl_accelerate_interpolator.eo
index 9af3669..648dc1b 100644
--- a/src/lib/ecore/efl_accelerate_interpolator.eo
+++ b/src/lib/ecore/efl_accelerate_interpolator.eo
@@ -1,19 +1,23 @@
1class @beta Efl.Accelerate_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Accelerate_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl accelerate interpolator class 3 [[Accelerated interpolator. It starts slow and accelerates, stopping abruptly when
4 it reaches $[1.0].
4 5
5 output = 1 - sin(Pi / 2 + input * Pi / 2); 6 Internally it uses the first half of a sinus rise (from 0 to 0.5) and the steepness
7 can be customized.
6 ]] 8 ]]
7 data: Efl_Accelerate_Interpolator_Data; 9 data: Efl_Accelerate_Interpolator_Data;
8 methods { 10 methods {
9 @property factor { 11 @property slope {
10 [[Factor property]] 12 [[Customize the acceleration effect.]]
11 set { 13 set {
12 } 14 }
13 get { 15 get {
14 } 16 }
15 values { 17 values {
16 factor: double; [[Factor of the interpolation function.]] 18 slope: double; [[How steep is the effect. $[0] performs a linear interpolation,
19 $[1] corresponds to a sinus function and higher numbers produce
20 an increasingly steep effect.]]
17 } 21 }
18 } 22 }
19 } 23 }
diff --git a/src/lib/ecore/efl_boolean_model.c b/src/lib/ecore/efl_boolean_model.c
index 3eaad88..552baf1 100644
--- a/src/lib/ecore/efl_boolean_model.c
+++ b/src/lib/ecore/efl_boolean_model.c
@@ -258,11 +258,11 @@ _child_removed(void *data, const Efl_Event *event)
258 Eina_Iterator *it; 258 Eina_Iterator *it;
259 Eina_Array updated; 259 Eina_Array updated;
260 260
261 if (!pd->parent) return; 261 if (!pd->values) return;
262 262
263 eina_array_step_set(&updated, sizeof (Eina_Array), 8); 263 eina_array_step_set(&updated, sizeof (Eina_Array), 8);
264 264
265 it = eina_hash_iterator_data_new(pd->parent->values); 265 it = eina_hash_iterator_data_new(pd->values);
266 EINA_ITERATOR_FOREACH(it, v) 266 EINA_ITERATOR_FOREACH(it, v)
267 { 267 {
268 Efl_Boolean_Model_Storage_Range *lookup; 268 Efl_Boolean_Model_Storage_Range *lookup;
@@ -276,14 +276,14 @@ _child_removed(void *data, const Efl_Event *event)
276 { 276 {
277 unsigned char lower_mask = (((unsigned char)1) << (ev->index & 0x7)) - 1; 277 unsigned char lower_mask = (((unsigned char)1) << (ev->index & 0x7)) - 1;
278 unsigned char upper_mask = (~(((unsigned char)1) << (ev->index & 0x7))) & (~lower_mask); 278 unsigned char upper_mask = (~(((unsigned char)1) << (ev->index & 0x7))) & (~lower_mask);
279 unsigned char offset = (ev->index - lookup->offset) >> 3; 279 uint16_t offset = (ev->index - lookup->offset) >> 3;
280 uint16_t byte_length = lookup->length >> 3; 280 uint16_t byte_length = lookup->length >> 3;
281 281
282 // Manually shift all the byte in the buffer 282 // Manually shift all the byte in the buffer
283 while (offset < byte_length) 283 while (offset < byte_length)
284 { 284 {
285 lookup->buffer[offset] = (lookup->buffer[offset] & upper_mask) | 285 lookup->buffer[offset] = ((lookup->buffer[offset] & upper_mask) >> 1) |
286 ((lookup->buffer[offset] & lower_mask) << 1); 286 (lookup->buffer[offset] & lower_mask);
287 if (offset + 1 < byte_length) 287 if (offset + 1 < byte_length)
288 lookup->buffer[offset] |= lookup->buffer[offset + 1] & 0x1; 288 lookup->buffer[offset] |= lookup->buffer[offset + 1] & 0x1;
289 289
diff --git a/src/lib/ecore/efl_boolean_model.eo b/src/lib/ecore/efl_boolean_model.eo
index 48eab60..8222e30 100644
--- a/src/lib/ecore/efl_boolean_model.eo
+++ b/src/lib/ecore/efl_boolean_model.eo
@@ -11,13 +11,13 @@ class @beta Efl.Boolean_Model extends Efl.Composite_Model
11 params { 11 params {
12 @in name: string; [[The name of the new boolean property.]] 12 @in name: string; [[The name of the new boolean property.]]
13 @in default_value: bool; [[Default value for new boolean property.]] 13 @in default_value: bool; [[Default value for new boolean property.]]
14 } 14 }
15 } 15 }
16 boolean_del { 16 boolean_del {
17 [[Deletes an existing named boolean property.]] 17 [[Deletes an existing named boolean property.]]
18 params { 18 params {
19 @in name: string; [[Name of the property to be deleted.]] 19 @in name: string; [[Name of the property to be deleted.]]
20 } 20 }
21 } 21 }
22 boolean_iterator_get { 22 boolean_iterator_get {
23 [[Gets an iterator that will quickly find all the indices with the requested value for a specific property.]] 23 [[Gets an iterator that will quickly find all the indices with the requested value for a specific property.]]
@@ -25,7 +25,7 @@ class @beta Efl.Boolean_Model extends Efl.Composite_Model
25 @in name: string; [[The name of the property to examine.]] 25 @in name: string; [[The name of the property to examine.]]
26 @in request: bool; [[The value to look for.]] 26 @in request: bool; [[The value to look for.]]
27 } 27 }
28 return: iterator<ptr(uint64)>; [[The iterator that is valid until any change is made on the model.]] 28 return: iterator<uint64> @move; [[The iterator that is valid until any change is made on the model.]]
29 } 29 }
30 } 30 }
31 implements { 31 implements {
diff --git a/src/lib/ecore/efl_bounce_interpolator.c b/src/lib/ecore/efl_bounce_interpolator.c
index 7565019..11703b8 100644
--- a/src/lib/ecore/efl_bounce_interpolator.c
+++ b/src/lib/ecore/efl_bounce_interpolator.c
@@ -11,7 +11,8 @@ typedef struct _Efl_Bounce_Interpolator_Data Efl_Bounce_Interpolator_Data;
11 11
12struct _Efl_Bounce_Interpolator_Data 12struct _Efl_Bounce_Interpolator_Data
13{ 13{
14 double factor[2]; 14 double rigidness;
15 int bounces;
15}; 16};
16 17
17EOLIAN static double 18EOLIAN static double
@@ -23,28 +24,37 @@ _efl_bounce_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED,
23 return progress; 24 return progress;
24 25
25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_BOUNCE, 26 return ecore_animator_pos_map(progress, ECORE_POS_MAP_BOUNCE,
26 pd->factor[0], pd->factor[1]); 27 pd->rigidness, (double)pd->bounces);
27} 28}
28 29
29EOLIAN static void 30EOLIAN static void
30_efl_bounce_interpolator_factors_set(Eo *eo_obj EINA_UNUSED, 31_efl_bounce_interpolator_rigidness_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Bounce_Interpolator_Data *pd, 32 Efl_Bounce_Interpolator_Data *pd,
32 double factor1, double factor2) 33 double rigidness)
33{ 34{
34 pd->factor[0] = factor1; 35 pd->rigidness = rigidness;
35 pd->factor[1] = factor2; 36}
37
38EOLIAN static double
39_efl_bounce_interpolator_rigidness_get(const Eo *eo_obj EINA_UNUSED,
40 Efl_Bounce_Interpolator_Data *pd)
41{
42 return pd->rigidness;
36} 43}
37 44
38EOLIAN static void 45EOLIAN static void
39_efl_bounce_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED, 46_efl_bounce_interpolator_bounces_set(Eo *eo_obj EINA_UNUSED,
40 Efl_Bounce_Interpolator_Data *pd, 47 Efl_Bounce_Interpolator_Data *pd,
41 double *factor1, double *factor2) 48 int bounces)
42{ 49{
43 if (factor1) 50 pd->bounces = bounces;
44 *factor1 = pd->factor[0]; 51}
45 52
46 if (factor2) 53EOLIAN static int
47 *factor2 = pd->factor[1]; 54_efl_bounce_interpolator_bounces_get(const Eo *eo_obj EINA_UNUSED,
55 Efl_Bounce_Interpolator_Data *pd)
56{
57 return pd->bounces;
48} 58}
49 59
50EOLIAN static Efl_Object * 60EOLIAN static Efl_Object *
@@ -53,8 +63,8 @@ _efl_bounce_interpolator_efl_object_constructor(Eo *eo_obj,
53{ 63{
54 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 64 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
55 65
56 pd->factor[0] = 1.0; 66 pd->rigidness = 1.0;
57 pd->factor[1] = 1.0; 67 pd->bounces = 1;
58 68
59 return eo_obj; 69 return eo_obj;
60} 70}
diff --git a/src/lib/ecore/efl_bounce_interpolator.eo b/src/lib/ecore/efl_bounce_interpolator.eo
index d6b1147..54998d6 100644
--- a/src/lib/ecore/efl_bounce_interpolator.eo
+++ b/src/lib/ecore/efl_bounce_interpolator.eo
@@ -1,17 +1,31 @@
1class @beta Efl.Bounce_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Bounce_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl bounce interpolator class]] 3 [[Bouncing interpolator. The value quickly reaches $[1.0] and then bounces back
4 a number of times before stopping at $[1.0].
5
6 The number of bounces and how far it goes back on every bounce can be customized.
7 ]]
4 data: Efl_Bounce_Interpolator_Data; 8 data: Efl_Bounce_Interpolator_Data;
5 methods { 9 methods {
6 @property factors { 10 @property bounces {
7 [[Factors property]] 11 [[Customize the number of bounces.]]
8 set { 12 set {
9 } 13 }
10 get { 14 get {
11 } 15 }
12 values { 16 values {
13 factor1: double; [[First factor of the interpolation function.]] 17 bounces: int; [[Number of bounces before stopping.]]
14 factor2: double; [[Second factor of the interpolation function.]] 18 }
19 }
20 @property rigidness {
21 [[Customize the rigidness.]]
22 set {
23 }
24 get {
25 }
26 values {
27 rigidness: double; [[How much energy is lost on every bounce.
28 Higher numbers result in smaller bounces (lesser bounciness).]]
15 } 29 }
16 } 30 }
17 } 31 }
diff --git a/src/lib/ecore/efl_composite_model.c b/src/lib/ecore/efl_composite_model.c
index b3896bc..ad0c62b 100644
--- a/src/lib/ecore/efl_composite_model.c
+++ b/src/lib/ecore/efl_composite_model.c
@@ -481,7 +481,7 @@ _efl_composite_model_efl_model_child_del(Eo *obj EINA_UNUSED,
481 Efl_Composite_Model_Data *pd, 481 Efl_Composite_Model_Data *pd,
482 Efl_Object *child) 482 Efl_Object *child)
483{ 483{
484 efl_model_child_del(pd->source, child); 484 efl_model_child_del(pd->source, efl_ui_view_model_get(child));
485} 485}
486 486
487static void 487static void
diff --git a/src/lib/ecore/efl_core_command_line.eo b/src/lib/ecore/efl_core_command_line.eo
index 6eec372..24849be 100644
--- a/src/lib/ecore/efl_core_command_line.eo
+++ b/src/lib/ecore/efl_core_command_line.eo
@@ -50,7 +50,7 @@ mixin @beta Efl.Core.Command_Line requires Efl.Object {
50 } 50 }
51 command_access { 51 command_access {
52 [[ Get the accessor which enables access to each argument that got passed to this object. ]] 52 [[ Get the accessor which enables access to each argument that got passed to this object. ]]
53 return : accessor<stringshare>; 53 return : accessor<stringshare> @move;
54 } 54 }
55 @property command_array { 55 @property command_array {
56 [[ Use an array to fill this object 56 [[ Use an array to fill this object
diff --git a/src/lib/ecore/efl_core_env.eo b/src/lib/ecore/efl_core_env.eo
index 593a3a3..c17e0a1 100644
--- a/src/lib/ecore/efl_core_env.eo
+++ b/src/lib/ecore/efl_core_env.eo
@@ -47,7 +47,7 @@ class @beta Efl.Core.Env extends Efl.Object implements Efl.Duplicate {
47 47
48 } 48 }
49 values { 49 values {
50 iter : iterator<string>; 50 iter : iterator<string> @move;
51 } 51 }
52 } 52 }
53 } 53 }
diff --git a/src/lib/ecore/efl_cubic_bezier_interpolator.c b/src/lib/ecore/efl_cubic_bezier_interpolator.c
index 8b9b376..2413714 100644
--- a/src/lib/ecore/efl_cubic_bezier_interpolator.c
+++ b/src/lib/ecore/efl_cubic_bezier_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Cubic_Bezier_Interpolator_Data Efl_Cubic_Bezier_Interpolator
11 11
12struct _Efl_Cubic_Bezier_Interpolator_Data 12struct _Efl_Cubic_Bezier_Interpolator_Data
13{ 13{
14 double factor[4]; 14 double control_points[4];
15}; 15};
16 16
17EOLIAN static double 17EOLIAN static double
@@ -23,38 +23,36 @@ _efl_cubic_bezier_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUS
23 return progress; 23 return progress;
24 24
25 return ecore_animator_pos_map_n(progress, ECORE_POS_MAP_CUBIC_BEZIER, 4, 25 return ecore_animator_pos_map_n(progress, ECORE_POS_MAP_CUBIC_BEZIER, 4,
26 pd->factor); 26 pd->control_points);
27} 27}
28 28
29EOLIAN static void 29EOLIAN static void
30_efl_cubic_bezier_interpolator_factors_set(Eo *eo_obj EINA_UNUSED, 30_efl_cubic_bezier_interpolator_control_points_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Cubic_Bezier_Interpolator_Data *pd, 31 Efl_Cubic_Bezier_Interpolator_Data *pd,
32 double factor1, double factor2, 32 Eina_Vector2 p1, Eina_Vector2 p2)
33 double factor3, double factor4)
34{ 33{
35 pd->factor[0] = factor1; 34 pd->control_points[0] = p1.x;
36 pd->factor[1] = factor2; 35 pd->control_points[1] = p1.y;
37 pd->factor[2] = factor3; 36 pd->control_points[2] = p2.x;
38 pd->factor[3] = factor4; 37 pd->control_points[3] = p2.y;
39} 38}
40 39
41EOLIAN static void 40EOLIAN static void
42_efl_cubic_bezier_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED, 41_efl_cubic_bezier_interpolator_control_points_get(const Eo *eo_obj EINA_UNUSED,
43 Efl_Cubic_Bezier_Interpolator_Data *pd, 42 Efl_Cubic_Bezier_Interpolator_Data *pd,
44 double *factor1, double *factor2, 43 Eina_Vector2 *p1, Eina_Vector2 *p2)
45 double *factor3, double *factor4)
46{ 44{
47 if (factor1) 45 if (p1)
48 *factor1 = pd->factor[0]; 46 {
47 p1->x = pd->control_points[0];
48 p1->y = pd->control_points[1];
49 }
49 50
50 if (factor2) 51 if (p2)
51 *factor2 = pd->factor[1]; 52 {
52 53 p2->x = pd->control_points[2];
53 if (factor3) 54 p2->y = pd->control_points[3];
54 *factor3 = pd->factor[2]; 55 }
55
56 if (factor4)
57 *factor4 = pd->factor[3];
58} 56}
59 57
60EOLIAN static Efl_Object * 58EOLIAN static Efl_Object *
@@ -63,10 +61,10 @@ _efl_cubic_bezier_interpolator_efl_object_constructor(Eo *eo_obj,
63{ 61{
64 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 62 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
65 63
66 pd->factor[0] = 1.0; 64 pd->control_points[0] = 1.0;
67 pd->factor[1] = 1.0; 65 pd->control_points[1] = 1.0;
68 pd->factor[2] = 1.0; 66 pd->control_points[2] = 1.0;
69 pd->factor[3] = 1.0; 67 pd->control_points[3] = 1.0;
70 68
71 return eo_obj; 69 return eo_obj;
72} 70}
diff --git a/src/lib/ecore/efl_cubic_bezier_interpolator.eo b/src/lib/ecore/efl_cubic_bezier_interpolator.eo
index c6dd144..30614b9 100644
--- a/src/lib/ecore/efl_cubic_bezier_interpolator.eo
+++ b/src/lib/ecore/efl_cubic_bezier_interpolator.eo
@@ -1,19 +1,31 @@
1class @beta Efl.Cubic_Bezier_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Cubic_Bezier_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl cubic_bezier interpolator class]] 3 [[Cubic Bezier interpolator. It starts slow, then moves quickly and then slows down
4 again before stopping.
5
6 The exact shape of the mapping curve can be modified through the @.control_points
7 property.
8 ]]
4 data: Efl_Cubic_Bezier_Interpolator_Data; 9 data: Efl_Cubic_Bezier_Interpolator_Data;
5 methods { 10 methods {
6 @property factors { 11 @property control_points {
7 [[Factors property]] 12 [[Cubic Bezier curves are described by 4 2D control points
13 (https://en.wikipedia.org/wiki/B%C3%A9zier_curve).
14 For each control point, the X coordinate is an input value and the Y coordinate is the
15 corresponding output value.
16 The first one, P0, is set to $[(0,0)]: The input $[0.0] is mapped to the $[0.0] output.
17 The last one, P3, is set to $[(1,1)]: The input $[1.0] is mapped to the $[1.0] output.
18 The other two control points can be set through this property and control the shape of
19 the curve. Note that the control points do not need to be in the $[0...1] range, and
20 neither do the output values of the curve.
21 ]]
8 set { 22 set {
9 } 23 }
10 get { 24 get {
11 } 25 }
12 values { 26 values {
13 factor1: double; [[First factor of the interpolation function.]] 27 p1: Eina.Vector2; [[P1 control point.]]
14 factor2: double; [[Second factor of the interpolation function.]] 28 p2: Eina.Vector2; [[P2 control point.]]
15 factor3: double; [[Third factor of the interpolation function.]]
16 factor4: double; [[Fourth factor of the interpolation function.]]
17 } 29 }
18 } 30 }
19 } 31 }
diff --git a/src/lib/ecore/efl_decelerate_interpolator.c b/src/lib/ecore/efl_decelerate_interpolator.c
index 575ac22..9a8494d 100644
--- a/src/lib/ecore/efl_decelerate_interpolator.c
+++ b/src/lib/ecore/efl_decelerate_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Decelerate_Interpolator_Data Efl_Decelerate_Interpolator_Dat
11 11
12struct _Efl_Decelerate_Interpolator_Data 12struct _Efl_Decelerate_Interpolator_Data
13{ 13{
14 double factor; 14 double slope;
15}; 15};
16 16
17EOLIAN static double 17EOLIAN static double
@@ -23,22 +23,22 @@ _efl_decelerate_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED
23 return progress; 23 return progress;
24 24
25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_DECELERATE_FACTOR, 25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_DECELERATE_FACTOR,
26 pd->factor, 0); 26 pd->slope, 0);
27} 27}
28 28
29EOLIAN static void 29EOLIAN static void
30_efl_decelerate_interpolator_factor_set(Eo *eo_obj EINA_UNUSED, 30_efl_decelerate_interpolator_slope_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Decelerate_Interpolator_Data *pd, 31 Efl_Decelerate_Interpolator_Data *pd,
32 double factor) 32 double slope)
33{ 33{
34 pd->factor = factor; 34 pd->slope = slope;
35} 35}
36 36
37EOLIAN static double 37EOLIAN static double
38_efl_decelerate_interpolator_factor_get(const Eo *eo_obj EINA_UNUSED, 38_efl_decelerate_interpolator_slope_get(const Eo *eo_obj EINA_UNUSED,
39 Efl_Decelerate_Interpolator_Data *pd EINA_UNUSED) 39 Efl_Decelerate_Interpolator_Data *pd EINA_UNUSED)
40{ 40{
41 return pd->factor; 41 return pd->slope;
42} 42}
43 43
44EOLIAN static Efl_Object * 44EOLIAN static Efl_Object *
@@ -47,7 +47,7 @@ _efl_decelerate_interpolator_efl_object_constructor(Eo *eo_obj,
47{ 47{
48 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 48 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
49 49
50 pd->factor = 1.0; 50 pd->slope = 1.0;
51 51
52 return eo_obj; 52 return eo_obj;
53} 53}
diff --git a/src/lib/ecore/efl_decelerate_interpolator.eo b/src/lib/ecore/efl_decelerate_interpolator.eo
index 802d409..eef3b3a 100644
--- a/src/lib/ecore/efl_decelerate_interpolator.eo
+++ b/src/lib/ecore/efl_decelerate_interpolator.eo
@@ -1,19 +1,23 @@
1class @beta Efl.Decelerate_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Decelerate_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl decelerate interpolator class 3 [[Decelerated interpolator. It starts fast and decelerates, stopping smoothly when
4 it reaches $[1.0].
4 5
5 output = sin(input * Pi / 2); 6 Internally it uses the second half of a sinus rise (from 0.5 to 1.0) and the steepness
7 can be customized through the @.slope property.
6 ]] 8 ]]
7 data: Efl_Decelerate_Interpolator_Data; 9 data: Efl_Decelerate_Interpolator_Data;
8 methods { 10 methods {
9 @property factor { 11 @property slope {
10 [[Factor property]] 12 [[Customize the deceleration effect.]]
11 set { 13 set {
12 } 14 }
13 get { 15 get {
14 } 16 }
15 values { 17 values {
16 factor: double; [[Factor of the interpolation function.]] 18 slope: double; [[How steep is the effect. $[0] performs a linear interpolation,
19 $[1] corresponds to a sinus function and higher numbers produce
20 an increasingly steep effect.]]
17 } 21 }
18 } 22 }
19 } 23 }
diff --git a/src/lib/ecore/efl_divisor_interpolator.c b/src/lib/ecore/efl_divisor_interpolator.c
index 3cbc12b..2d96764 100644
--- a/src/lib/ecore/efl_divisor_interpolator.c
+++ b/src/lib/ecore/efl_divisor_interpolator.c
@@ -11,7 +11,8 @@ typedef struct _Efl_Divisor_Interpolator_Data Efl_Divisor_Interpolator_Data;
11 11
12struct _Efl_Divisor_Interpolator_Data 12struct _Efl_Divisor_Interpolator_Data
13{ 13{
14 double factor[2]; 14 double divisor;
15 int power;
15}; 16};
16 17
17EOLIAN static double 18EOLIAN static double
@@ -23,28 +24,36 @@ _efl_divisor_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED,
23 return progress; 24 return progress;
24 25
25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_DIVISOR_INTERP, 26 return ecore_animator_pos_map(progress, ECORE_POS_MAP_DIVISOR_INTERP,
26 pd->factor[0], pd->factor[1]); 27 pd->divisor, (double)pd->power);
27} 28}
28 29
29EOLIAN static void 30EOLIAN static void
30_efl_divisor_interpolator_factors_set(Eo *eo_obj EINA_UNUSED, 31_efl_divisor_interpolator_divisor_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Divisor_Interpolator_Data *pd, 32 Efl_Divisor_Interpolator_Data *pd,
32 double factor1, double factor2) 33 double divisor)
33{ 34{
34 pd->factor[0] = factor1; 35 pd->divisor = divisor;
35 pd->factor[1] = factor2;
36} 36}
37 37
38EOLIAN static double
39_efl_divisor_interpolator_divisor_get(const Eo *eo_obj EINA_UNUSED,
40 Efl_Divisor_Interpolator_Data *pd)
41{
42 return pd->divisor;
43}
38EOLIAN static void 44EOLIAN static void
39_efl_divisor_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED, 45_efl_divisor_interpolator_power_set(Eo *eo_obj EINA_UNUSED,
40 Efl_Divisor_Interpolator_Data *pd, 46 Efl_Divisor_Interpolator_Data *pd,
41 double *factor1, double *factor2) 47 int power)
42{ 48{
43 if (factor1) 49 pd->power = power;
44 *factor1 = pd->factor[0]; 50}
45 51
46 if (factor2) 52EOLIAN static int
47 *factor2 = pd->factor[1]; 53_efl_divisor_interpolator_power_get(const Eo *eo_obj EINA_UNUSED,
54 Efl_Divisor_Interpolator_Data *pd)
55{
56 return pd->power;
48} 57}
49 58
50EOLIAN static Efl_Object * 59EOLIAN static Efl_Object *
@@ -53,8 +62,8 @@ _efl_divisor_interpolator_efl_object_constructor(Eo *eo_obj,
53{ 62{
54 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 63 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
55 64
56 pd->factor[0] = 1.0; 65 pd->divisor = 1.0;
57 pd->factor[1] = 1.0; 66 pd->power = 1;
58 67
59 return eo_obj; 68 return eo_obj;
60} 69}
diff --git a/src/lib/ecore/efl_divisor_interpolator.eo b/src/lib/ecore/efl_divisor_interpolator.eo
index 848c44b..09b0ed6 100644
--- a/src/lib/ecore/efl_divisor_interpolator.eo
+++ b/src/lib/ecore/efl_divisor_interpolator.eo
@@ -1,17 +1,27 @@
1class @beta Efl.Divisor_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Divisor_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl divisor interpolator class]] 3 [[Divisor interpolator.
4 ]]
4 data: Efl_Divisor_Interpolator_Data; 5 data: Efl_Divisor_Interpolator_Data;
5 methods { 6 methods {
6 @property factors { 7 @property divisor {
7 [[Factors property]] 8 [[Customize divisor factor.]]
8 set { 9 set {
9 } 10 }
10 get { 11 get {
11 } 12 }
12 values { 13 values {
13 factor1: double; [[First factor of the interpolation function.]] 14 divisor: double; [[Divisor.]]
14 factor2: double; [[Second factor of the interpolation function.]] 15 }
16 }
17 @property power {
18 [[Customize power factor.]]
19 set {
20 }
21 get {
22 }
23 values {
24 power: int; [[Exponent.]]
15 } 25 }
16 } 26 }
17 } 27 }
diff --git a/src/lib/ecore/efl_exe.c b/src/lib/ecore/efl_exe.c
index f6ae3bf..8609dbf 100644
--- a/src/lib/ecore/efl_exe.c
+++ b/src/lib/ecore/efl_exe.c
@@ -540,6 +540,11 @@ _efl_exe_efl_task_run(Eo *obj, Efl_Exe_Data *pd)
540 pd->env = NULL; 540 pd->env = NULL;
541 } 541 }
542 542
543 // close all fd's other than the first 3 (0, 1, 2) and exited write fd
544 int except[2] = { 0, -1 };
545 except[0] = pd->fd.exited_write;
546 eina_file_close_from(3, except);
547
543 // actually execute! 548 // actually execute!
544 _exec(cmd, pd->flags, td->flags); 549 _exec(cmd, pd->flags, td->flags);
545 // we couldn't exec... uh oh. HAAAAAAAALP! 550 // we couldn't exec... uh oh. HAAAAAAAALP!
diff --git a/src/lib/ecore/efl_linear_interpolator.eo b/src/lib/ecore/efl_linear_interpolator.eo
index e22e980..866247d 100644
--- a/src/lib/ecore/efl_linear_interpolator.eo
+++ b/src/lib/ecore/efl_linear_interpolator.eo
@@ -1,6 +1,7 @@
1class @beta Efl.Linear_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Linear_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl linear interpolator class]] 3 [[Linear interpolation (pass-through). Input values are used unmodified as output.
4 ]]
4 data: Efl_Linear_Interpolator_Data; 5 data: Efl_Linear_Interpolator_Data;
5 implements { 6 implements {
6 Efl.Interpolator.interpolate; 7 Efl.Interpolator.interpolate;
diff --git a/src/lib/ecore/efl_loop.c b/src/lib/ecore/efl_loop.c
index e40dbef..726a4b3 100644
--- a/src/lib/ecore/efl_loop.c
+++ b/src/lib/ecore/efl_loop.c
@@ -621,6 +621,14 @@ _efl_loop_message_process(Eo *obj, Efl_Loop_Data *pd)
621 } 621 }
622 else free(msg); 622 else free(msg);
623 } 623 }
624
625 while (pd->message_pending_queue)
626 {
627 msg = (Message *)pd->message_pending_queue;
628 pd->message_pending_queue = eina_inlist_remove(pd->message_pending_queue,
629 pd->message_pending_queue);
630 pd->message_queue = eina_inlist_append(pd->message_queue, EINA_INLIST_GET(msg));
631 }
624 } 632 }
625 return EINA_TRUE; 633 return EINA_TRUE;
626} 634}
@@ -655,6 +663,10 @@ _efl_loop_efl_task_end(Eo *obj, Efl_Loop_Data *pd EINA_UNUSED)
655 efl_loop_quit(obj, eina_value_int_init(0)); 663 efl_loop_quit(obj, eina_value_int_init(0));
656} 664}
657 665
666EFL_SCHEDULER_ARRAY_DEFINE(loop_scheduler,
667 EFL_LOOP_EVENT_IDLE_ENTER,
668 EFL_LOOP_EVENT_IDLE);
669
658EAPI Eina_Future_Scheduler * 670EAPI Eina_Future_Scheduler *
659efl_loop_future_scheduler_get(const Eo *obj) 671efl_loop_future_scheduler_get(const Eo *obj)
660{ 672{
@@ -667,15 +679,7 @@ efl_loop_future_scheduler_get(const Eo *obj)
667 Efl_Loop_Data *pd = efl_data_scope_get(obj, EFL_LOOP_CLASS); 679 Efl_Loop_Data *pd = efl_data_scope_get(obj, EFL_LOOP_CLASS);
668 680
669 if (!pd) return NULL; 681 if (!pd) return NULL;
670 if (!pd->future_scheduler.loop) 682 return efl_event_future_scheduler_get(obj, loop_scheduler());
671 {
672 Eina_Future_Scheduler *sched =
673 _ecore_event_future_scheduler_get();
674 pd->future_scheduler.eina_future_scheduler = *sched;
675 pd->future_scheduler.loop = obj;
676 pd->future_scheduler.loop_data = pd;
677 }
678 return &(pd->future_scheduler.eina_future_scheduler);
679 } 683 }
680 if (efl_isa(obj, EFL_LOOP_CONSUMER_CLASS)) 684 if (efl_isa(obj, EFL_LOOP_CONSUMER_CLASS))
681 return efl_loop_future_scheduler_get(efl_loop_get(obj)); 685 return efl_loop_future_scheduler_get(efl_loop_get(obj));
diff --git a/src/lib/ecore/efl_loop_message_handler.c b/src/lib/ecore/efl_loop_message_handler.c
index 05ecdbc..e243c17 100644
--- a/src/lib/ecore/efl_loop_message_handler.c
+++ b/src/lib/ecore/efl_loop_message_handler.c
@@ -54,8 +54,16 @@ _efl_loop_message_handler_message_send(Eo *obj, Efl_Loop_Message_Handler_Data *p
54 { 54 {
55 msg->handler = obj; 55 msg->handler = obj;
56 msg->message = message; 56 msg->message = message;
57 pd->loop_data->message_queue = eina_inlist_append 57 if (pd->loop_data->message_walking > 0)
58 (pd->loop_data->message_queue, EINA_INLIST_GET(msg)); 58 {
59 pd->loop_data->message_pending_queue = eina_inlist_append
60 (pd->loop_data->message_pending_queue, EINA_INLIST_GET(msg));
61 }
62 else
63 {
64 pd->loop_data->message_queue = eina_inlist_append
65 (pd->loop_data->message_queue, EINA_INLIST_GET(msg));
66 }
59 _efl_loop_message_send_info_set(message, EINA_INLIST_GET(msg), 67 _efl_loop_message_send_info_set(message, EINA_INLIST_GET(msg),
60 pd->loop, pd->loop_data); 68 pd->loop, pd->loop_data);
61 return; 69 return;
diff --git a/src/lib/ecore/efl_loop_timer.eo b/src/lib/ecore/efl_loop_timer.eo
index d726c1a..ebe5f47 100644
--- a/src/lib/ecore/efl_loop_timer.eo
+++ b/src/lib/ecore/efl_loop_timer.eo
@@ -26,7 +26,9 @@ class Efl.Loop_Timer extends Efl.Loop_Consumer
26 @property time_pending { 26 @property time_pending {
27 [[Pending time regarding a timer.]] 27 [[Pending time regarding a timer.]]
28 get { 28 get {
29 return: double; [[Pending time]] 29 }
30 values {
31 pending: double; [[Pending time]]
30 } 32 }
31 } 33 }
32 timer_reset { 34 timer_reset {
diff --git a/src/lib/ecore/efl_sinusoidal_interpolator.c b/src/lib/ecore/efl_sinusoidal_interpolator.c
index d36a776..3216ef9 100644
--- a/src/lib/ecore/efl_sinusoidal_interpolator.c
+++ b/src/lib/ecore/efl_sinusoidal_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Sinusoidal_Interpolator_Data Efl_Sinusoidal_Interpolator_Dat
11 11
12struct _Efl_Sinusoidal_Interpolator_Data 12struct _Efl_Sinusoidal_Interpolator_Data
13{ 13{
14 double factor; 14 double slope;
15}; 15};
16 16
17EOLIAN static double 17EOLIAN static double
@@ -23,22 +23,22 @@ _efl_sinusoidal_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED
23 return progress; 23 return progress;
24 24
25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_SINUSOIDAL_FACTOR, 25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_SINUSOIDAL_FACTOR,
26 pd->factor, 0); 26 pd->slope, 0);
27} 27}
28 28
29EOLIAN static void 29EOLIAN static void
30_efl_sinusoidal_interpolator_factor_set(Eo *eo_obj EINA_UNUSED, 30_efl_sinusoidal_interpolator_slope_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Sinusoidal_Interpolator_Data *pd, 31 Efl_Sinusoidal_Interpolator_Data *pd,
32 double factor) 32 double slope)
33{ 33{
34 pd->factor = factor; 34 pd->slope = slope;
35} 35}
36 36
37EOLIAN static double 37EOLIAN static double
38_efl_sinusoidal_interpolator_factor_get(const Eo *eo_obj EINA_UNUSED, 38_efl_sinusoidal_interpolator_slope_get(const Eo *eo_obj EINA_UNUSED,
39 Efl_Sinusoidal_Interpolator_Data *pd EINA_UNUSED) 39 Efl_Sinusoidal_Interpolator_Data *pd EINA_UNUSED)
40{ 40{
41 return pd->factor; 41 return pd->slope;
42} 42}
43 43
44EOLIAN static Efl_Object * 44EOLIAN static Efl_Object *
@@ -47,7 +47,7 @@ _efl_sinusoidal_interpolator_efl_object_constructor(Eo *eo_obj,
47{ 47{
48 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 48 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
49 49
50 pd->factor = 1.0; 50 pd->slope = 1.0;
51 51
52 return eo_obj; 52 return eo_obj;
53} 53}
diff --git a/src/lib/ecore/efl_sinusoidal_interpolator.eo b/src/lib/ecore/efl_sinusoidal_interpolator.eo
index e0701aa..ad48232 100644
--- a/src/lib/ecore/efl_sinusoidal_interpolator.eo
+++ b/src/lib/ecore/efl_sinusoidal_interpolator.eo
@@ -1,19 +1,22 @@
1class @beta Efl.Sinusoidal_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Sinusoidal_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl sinusoidal interpolator class 3 [[Sinusoidal interpolator. It starts slow, then moves quickly and then slows down
4 again before stopping.
4 5
5 output = (1 - cos(input * Pi)) / 2; 6 How long it stays in the quick zone (the slope of the curve) can be customized.
6 ]] 7 ]]
7 data: Efl_Sinusoidal_Interpolator_Data; 8 data: Efl_Sinusoidal_Interpolator_Data;
8 methods { 9 methods {
9 @property factor { 10 @property slope {
10 [[Factor property]] 11 [[Customize the sinusoidal effect.]]
11 set { 12 set {
12 } 13 }
13 get { 14 get {
14 } 15 }
15 values { 16 values {
16 factor: double; [[Factor of the interpolation function.]] 17 slope: double; [[How steep is the effect. $[0] performs a linear interpolation,
18 $[1] corresponds to a sinus function and higher numbers produce
19 an increasingly steep effect.]]
17 } 20 }
18 } 21 }
19 } 22 }
diff --git a/src/lib/ecore/efl_spring_interpolator.c b/src/lib/ecore/efl_spring_interpolator.c
index 183e54c..71611bf 100644
--- a/src/lib/ecore/efl_spring_interpolator.c
+++ b/src/lib/ecore/efl_spring_interpolator.c
@@ -11,40 +11,50 @@ typedef struct _Efl_Spring_Interpolator_Data Efl_Spring_Interpolator_Data;
11 11
12struct _Efl_Spring_Interpolator_Data 12struct _Efl_Spring_Interpolator_Data
13{ 13{
14 double factor[2]; 14 double decay;
15 int oscillations;
15}; 16};
16 17
17EOLIAN static double 18EOLIAN static double
18_efl_spring_interpolator_efl_interpolator_interpolate(Eo *obj EINA_UNUSED, 19_efl_spring_interpolator_efl_interpolator_interpolate(Eo *obj EINA_UNUSED,
19 Efl_Spring_Interpolator_Data *pd EINA_UNUSED, 20 Efl_Spring_Interpolator_Data *pd,
20 double progress) 21 double progress)
21{ 22{
22 if ((progress < 0.0) || (progress > 1.0)) 23 if ((progress < 0.0) || (progress > 1.0))
23 return progress; 24 return progress;
24 25
25 return ecore_animator_pos_map(progress, ECORE_POS_MAP_SPRING, 26 return ecore_animator_pos_map(progress, ECORE_POS_MAP_SPRING,
26 pd->factor[0], pd->factor[1]); 27 pd->decay, (double)pd->oscillations);
27} 28}
28 29
29EOLIAN static void 30EOLIAN static void
30_efl_spring_interpolator_factors_set(Eo *eo_obj EINA_UNUSED, 31_efl_spring_interpolator_decay_set(Eo *eo_obj EINA_UNUSED,
31 Efl_Spring_Interpolator_Data *pd, 32 Efl_Spring_Interpolator_Data *pd,
32 double factor1, double factor2) 33 double decay)
33{ 34{
34 pd->factor[0] = factor1; 35 pd->decay = decay;
35 pd->factor[1] = factor2; 36}
37
38EOLIAN static double
39_efl_spring_interpolator_decay_get(const Eo *eo_obj EINA_UNUSED,
40 Efl_Spring_Interpolator_Data *pd)
41{
42 return pd->decay;
36} 43}
37 44
38EOLIAN static void 45EOLIAN static void
39_efl_spring_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED, 46_efl_spring_interpolator_oscillations_set(Eo *eo_obj EINA_UNUSED,
40 Efl_Spring_Interpolator_Data *pd, 47 Efl_Spring_Interpolator_Data *pd,
41 double *factor1, double *factor2) 48 int oscillations)
42{ 49{
43 if (factor1) 50 pd->oscillations = oscillations;
44 *factor1 = pd->factor[0]; 51}
45 52
46 if (factor2) 53EOLIAN static int
47 *factor2 = pd->factor[1]; 54_efl_spring_interpolator_oscillations_get(const Eo *eo_obj EINA_UNUSED,
55 Efl_Spring_Interpolator_Data *pd)
56{
57 return pd->oscillations;
48} 58}
49 59
50EOLIAN static Efl_Object * 60EOLIAN static Efl_Object *
@@ -53,8 +63,8 @@ _efl_spring_interpolator_efl_object_constructor(Eo *eo_obj,
53{ 63{
54 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS)); 64 eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
55 65
56 pd->factor[0] = 1.0; 66 pd->decay = 1.0;
57 pd->factor[1] = 1.0; 67 pd->oscillations = 1;
58 68
59 return eo_obj; 69 return eo_obj;
60} 70}
diff --git a/src/lib/ecore/efl_spring_interpolator.eo b/src/lib/ecore/efl_spring_interpolator.eo
index 5549046..9890666 100644
--- a/src/lib/ecore/efl_spring_interpolator.eo
+++ b/src/lib/ecore/efl_spring_interpolator.eo
@@ -1,17 +1,31 @@
1class @beta Efl.Spring_Interpolator extends Efl.Object implements Efl.Interpolator 1class @beta Efl.Spring_Interpolator extends Efl.Object implements Efl.Interpolator
2{ 2{
3 [[Efl spring interpolator class]] 3 [[Spring interpolator. The value quickly reaches $[1.0] and then oscillates
4 around it a number of times before stopping (as if linked with a spring).
5
6 The number of oscillations and how quickly it stops can be customized.
7 ]]
4 data: Efl_Spring_Interpolator_Data; 8 data: Efl_Spring_Interpolator_Data;
5 methods { 9 methods {
6 @property factors { 10 @property decay {
7 [[Factors property]] 11 [[Customize the decay factor.]]
8 set { 12 set {
9 } 13 }
10 get { 14 get {
11 } 15 }
12 values { 16 values {
13 factor1: double; [[First factor of the interpolation function.]] 17 decay: double; [[How quickly energy is lost.
14 factor2: double; [[Second factor of the interpolation function.]] 18 Higher numbers result in smaller oscillations.]]
19 }
20 }
21 @property oscillations {
22 [[Customize number of oscillations.]]
23 set {
24 }
25 get {
26 }
27 values {
28 oscillations: int; [[Number of oscillations before stopping.]]
15 } 29 }
16 } 30 }
17 } 31 }
diff --git a/src/lib/ecore/meson.build b/src/lib/ecore/meson.build
index 5e777ae..34c32e7 100644
--- a/src/lib/ecore/meson.build
+++ b/src/lib/ecore/meson.build
@@ -185,7 +185,11 @@ if get_option('glib') == true and sys_windows == false
185endif 185endif
186 186
187if get_option('g-mainloop') == true 187if get_option('g-mainloop') == true
188 config_h.set('USE_G_MAIN_LOOP', '1') 188 if get_option('glib') == false
189 error('g-mainloop enabled by glib not. Please enable with -Dglib=true')
190 else
191 config_h.set('USE_G_MAIN_LOOP', '1')
192 endif
189endif 193endif
190 194
191if get_option('systemd') == true 195if get_option('systemd') == true
diff --git a/src/lib/ecore_con/Ecore_Con.h b/src/lib/ecore_con/Ecore_Con.h
index f919158..d8b9583 100644
--- a/src/lib/ecore_con/Ecore_Con.h
+++ b/src/lib/ecore_con/Ecore_Con.h
@@ -1126,12 +1126,8 @@ EAPI void ecore_con_socks_apply_always(Ecore_Con_Socks *ecs);
1126 * server to client and client to server, can be represented in the following 1126 * server to client and client to server, can be represented in the following
1127 * sequence diagram: 1127 * sequence diagram:
1128 * 1128 *
1129 * @htmlonly
1130 * <img src="ecore_con-client-server.png" style="max-width: 400px"/>
1131 * <a href="ecore_con-client-server.png">Full size</a>
1132 * @endhtmlonly
1133 *
1134 * @image rtf ecore_con-client-server.png 1129 * @image rtf ecore_con-client-server.png
1130 * @image html ecore_con-client-server.png
1135 * @image latex ecore_con-client-server.eps width=\\textwidth 1131 * @image latex ecore_con-client-server.eps width=\\textwidth
1136 * 1132 *
1137 * Please notice the important difference between these two codes: the first is 1133 * Please notice the important difference between these two codes: the first is
diff --git a/src/lib/ecore_con/ecore_con_url_curl.c b/src/lib/ecore_con/ecore_con_url_curl.c
index 4217f91..f4fe730 100644
--- a/src/lib/ecore_con/ecore_con_url_curl.c
+++ b/src/lib/ecore_con/ecore_con_url_curl.c
@@ -12,10 +12,6 @@
12# include <ws2tcpip.h> 12# include <ws2tcpip.h>
13#endif 13#endif
14 14
15#ifdef HAVE_ESCAPE
16# include <Escape.h>
17#endif
18
19#include "Ecore.h" 15#include "Ecore.h"
20#include "ecore_private.h" 16#include "ecore_private.h"
21#include "Ecore_Con.h" 17#include "Ecore_Con.h"
diff --git a/src/lib/ecore_con/efl_net_control_manager.eo b/src/lib/ecore_con/efl_net_control_manager.eo
index 4d7d232..3c84235 100644
--- a/src/lib/ecore_con/efl_net_control_manager.eo
+++ b/src/lib/ecore_con/efl_net_control_manager.eo
@@ -36,7 +36,7 @@ struct @beta Efl.Net.Control.Agent_Request_Input {
36 access_point: Efl.Net.Control.Access_Point; [[The access point which triggered this request.]] 36 access_point: Efl.Net.Control.Access_Point; [[The access point which triggered this request.]]
37 fields: Efl.Net.Control.Agent_Request_Input_Field; [[Bitwise OR of fields present in this request.]] 37 fields: Efl.Net.Control.Agent_Request_Input_Field; [[Bitwise OR of fields present in this request.]]
38 passphrase_type: string; [[Extra detail for the passphrase field, such as wep, psk, response (IEEE802.X GTC/OTP), string...]] 38 passphrase_type: string; [[Extra detail for the passphrase field, such as wep, psk, response (IEEE802.X GTC/OTP), string...]]
39 informational: list<ptr(Efl.Net.Control.Agent_Request_Input_Information)>; [[Such as the previous passphrase, VPN host]] 39 informational: list<Efl.Net.Control.Agent_Request_Input_Information>; [[Such as the previous passphrase, VPN host]]
40} 40}
41 41
42struct @beta Efl.Net.Control.Agent_Error { 42struct @beta Efl.Net.Control.Agent_Error {
diff --git a/src/lib/ecore_con/efl_net_dialer_http.eo b/src/lib/ecore_con/efl_net_dialer_http.eo
index 59701a3..00bff41 100644
--- a/src/lib/ecore_con/efl_net_dialer_http.eo
+++ b/src/lib/ecore_con/efl_net_dialer_http.eo
@@ -187,7 +187,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
187 187
188 request_headers_get { 188 request_headers_get {
189 [[Returns an iterator to the key-value pairs for request headers]] 189 [[Returns an iterator to the key-value pairs for request headers]]
190 return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator for request headers]] 190 return: iterator<Efl.Net.Http.Header> @move @no_unused; [[Iterator for request headers]]
191 } 191 }
192 192
193 @property request_content_length { 193 @property request_content_length {
@@ -250,7 +250,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
250 250
251 This will be usable after the "headers,done" event is dispatched. 251 This will be usable after the "headers,done" event is dispatched.
252 ]] 252 ]]
253 return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator for response headers]] 253 return: iterator<Efl.Net.Http.Header> @move @no_unused; [[Iterator for response headers]]
254 } 254 }
255 255
256 response_headers_all_get { 256 response_headers_all_get {
@@ -275,7 +275,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
275 275
276 This will be usable after the "headers,done" event is dispatched. 276 This will be usable after the "headers,done" event is dispatched.
277 ]] 277 ]]
278 return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator for all response headers]] 278 return: iterator<Efl.Net.Http.Header> @move @no_unused; [[Iterator for all response headers]]
279 } 279 }
280 280
281 response_headers_clear { 281 response_headers_clear {
diff --git a/src/lib/ecore_con/efl_net_dialer_websocket.eo b/src/lib/ecore_con/efl_net_dialer_websocket.eo
index 4bd96a5..612f504 100644
--- a/src/lib/ecore_con/efl_net_dialer_websocket.eo
+++ b/src/lib/ecore_con/efl_net_dialer_websocket.eo
@@ -260,7 +260,7 @@ class @beta Efl.Net.Dialer_Websocket extends Efl.Loop_Consumer implements Efl.Ne
260 260
261 request_headers_get { 261 request_headers_get {
262 [[Returns an iterator to the key-value pairs for request headers]] 262 [[Returns an iterator to the key-value pairs for request headers]]
263 return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator to key value pairs]] 263 return: iterator<Efl.Net.Http.Header> @move @no_unused; [[Iterator to key value pairs]]
264 } 264 }
265 265
266 @property cookie_jar { 266 @property cookie_jar {
diff --git a/src/lib/ecore_con/efl_net_ssl_conn-openssl.c b/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
index 3f88c20..fc8fb2e 100644
--- a/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
+++ b/src/lib/ecore_con/efl_net_ssl_conn-openssl.c
@@ -21,14 +21,6 @@
21# include <evil_private.h> /* dlsym */ 21# include <evil_private.h> /* dlsym */
22#endif 22#endif
23 23
24#ifdef HAVE_ESCAPE
25# include <Escape.h>
26#endif
27
28#ifdef HAVE_EXOTIC
29# include <Exotic.h>
30#endif
31
32#include "ecore_con_private.h" 24#include "ecore_con_private.h"
33 25
34/* OpenSSL's BIO is the abstraction for I/O, provide one for Efl.Io.* */ 26/* OpenSSL's BIO is the abstraction for I/O, provide one for Efl.Io.* */
diff --git a/src/lib/ecore_drm2/ecore_drm2_device.c b/src/lib/ecore_drm2/ecore_drm2_device.c
index c86df1a..7602114 100644
--- a/src/lib/ecore_drm2/ecore_drm2_device.c
+++ b/src/lib/ecore_drm2/ecore_drm2_device.c
@@ -487,7 +487,7 @@ _drm2_atomic_state_plane_fill(Ecore_Drm2_Plane_State *pstate, int fd)
487 { 487 {
488 pstate->supported_rotations |= r; 488 pstate->supported_rotations |= r;
489 pstate->rotation_map[ffs(r)] = 489 pstate->rotation_map[ffs(r)] =
490 1 << prop->enums[k].value; 490 1ULL << prop->enums[k].value;
491 } 491 }
492 } 492 }
493 } 493 }
diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c
index dfb2fa9..6fe3eb5 100644
--- a/src/lib/ecore_drm2/ecore_drm2_outputs.c
+++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c
@@ -659,7 +659,7 @@ _output_plane_states_get(Ecore_Drm2_Atomic_State *state, unsigned int crtc_id, i
659 states = 659 states =
660 eina_list_append(states, _atomic_state_plane_duplicate(pstate)); 660 eina_list_append(states, _atomic_state_plane_duplicate(pstate));
661 } 661 }
662 else if (pstate->mask & (1 << index)) 662 else if (pstate->mask & (1ULL << index))
663 { 663 {
664 states = 664 states =
665 eina_list_append(states, _atomic_state_plane_duplicate(pstate)); 665 eina_list_append(states, _atomic_state_plane_duplicate(pstate));
@@ -1454,7 +1454,7 @@ ecore_drm2_output_possible_crtc_get(Ecore_Drm2_Output *output, unsigned int crtc
1454 { 1454 {
1455 if (res->crtcs[k] != output->crtc_id) continue; 1455 if (res->crtcs[k] != output->crtc_id) continue;
1456 1456
1457 if (p & (1 << k)) 1457 if (p & (1ULL << k))
1458 { 1458 {
1459 ret = EINA_TRUE; 1459 ret = EINA_TRUE;
1460 break; 1460 break;
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 9d2d4d1..d3c26dd 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -24,6 +24,7 @@
24#include "ecore_private.h" 24#include "ecore_private.h"
25#include <Ecore_Input.h> 25#include <Ecore_Input.h>
26#include <Ecore_Input_Evas.h> 26#include <Ecore_Input_Evas.h>
27#define EFL_INTERNAL_UNSTABLE
27#include <Evas_Internal.h> 28#include <Evas_Internal.h>
28 29
29#include "Ecore_Evas.h" 30#include "Ecore_Evas.h"
@@ -34,9 +35,6 @@
34#include "ecore_evas_extn.h" 35#include "ecore_evas_extn.h"
35#include "ecore_evas_win32.h" 36#include "ecore_evas_win32.h"
36 37
37#define EFL_INTERNAL_UNSTABLE
38#include "interfaces/efl_common_internal.h"
39
40#include "ecore_private.h" 38#include "ecore_private.h"
41 39
42#ifndef O_BINARY 40#ifndef O_BINARY
diff --git a/src/lib/ecore_evas/ecore_evas_drm.h b/src/lib/ecore_evas/ecore_evas_drm.h
index 401fb1e..63ef7be 100644
--- a/src/lib/ecore_evas/ecore_evas_drm.h
+++ b/src/lib/ecore_evas/ecore_evas_drm.h
@@ -1,6 +1,7 @@
1#ifndef ECORE_EVAS_DRM_H_ 1#ifndef ECORE_EVAS_DRM_H_
2# define ECORE_EVAS_DRM_H_ 2# define ECORE_EVAS_DRM_H_
3 3
4#define EFL_INTERNAL_UNSTABLE
4# include "Evas_Internal.h" 5# include "Evas_Internal.h"
5 6
6typedef struct _Ecore_Evas_Interface_Drm Ecore_Evas_Interface_Drm; 7typedef struct _Ecore_Evas_Interface_Drm Ecore_Evas_Interface_Drm;
diff --git a/src/lib/ecore_evas/ecore_evas_util.c b/src/lib/ecore_evas/ecore_evas_util.c
index 4f3e9c4..7b07fdc 100644
--- a/src/lib/ecore_evas/ecore_evas_util.c
+++ b/src/lib/ecore_evas/ecore_evas_util.c
@@ -11,6 +11,7 @@
11 11
12#include "Ecore_Evas.h" 12#include "Ecore_Evas.h"
13#include "ecore_evas_private.h" 13#include "ecore_evas_private.h"
14#define EFL_INTERNAL_UNSTABLE
14#include "Evas_Internal.h" 15#include "Evas_Internal.h"
15 16
16static const char ASSOCIATE_KEY[] = "__Ecore_Evas_Associate"; 17static const char ASSOCIATE_KEY[] = "__Ecore_Evas_Associate";
diff --git a/src/lib/ecore_file/Ecore_File.h b/src/lib/ecore_file/Ecore_File.h
index 23a0521..37f3bd8 100644
--- a/src/lib/ecore_file/Ecore_File.h
+++ b/src/lib/ecore_file/Ecore_File.h
@@ -609,8 +609,8 @@ EAPI Eina_List *ecore_file_app_list(void);
609 * @return @c EINA_TRUE if the download start or @c EINA_FALSE on failure. 609 * @return @c EINA_TRUE if the download start or @c EINA_FALSE on failure.
610 * 610 *
611 * This function starts the download of the URL @p url and saves it to 611 * This function starts the download of the URL @p url and saves it to
612 * @p dst. @p url must provide the protocol, including 'http://', 612 * @p dst. @p url must provide the protocol, including '%http://',
613 * 'ftp://' or 'file://'. Ecore_File must be compiled with CURL to 613 * '%ftp://' or '%file://'. Ecore_File must be compiled with CURL to
614 * download using http and ftp protocols. If @p dst is ill-formed, or 614 * download using http and ftp protocols. If @p dst is ill-formed, or
615 * if it already exists, the function returns @c EINA_FALSE. When the 615 * if it already exists, the function returns @c EINA_FALSE. When the
616 * download is complete, the callback @p completion_cb is called and 616 * download is complete, the callback @p completion_cb is called and
@@ -684,8 +684,8 @@ EAPI void ecore_file_download_abort(Ecore_File_Download_Job *job);
684 * @return @c EINA_TRUE if protocol is handled, @c EINA_FALSE otherwise. 684 * @return @c EINA_TRUE if protocol is handled, @c EINA_FALSE otherwise.
685 * 685 *
686 * This function returns @c EINA_TRUE if @p protocol is supported, 686 * This function returns @c EINA_TRUE if @p protocol is supported,
687 * @c EINA_FALSE otherwise. @p protocol can be 'http://', 'ftp://' or 687 * @c EINA_FALSE otherwise. @p protocol can be '%http://', '%ftp://' or
688 * 'file://'. Ecore_FILE must be compiled with CURL to handle http and 688 * '%file://'. Ecore_FILE must be compiled with CURL to handle http and
689 * ftp protocols. 689 * ftp protocols.
690 */ 690 */
691EAPI Eina_Bool ecore_file_download_protocol_available(const char *protocol); 691EAPI Eina_Bool ecore_file_download_protocol_available(const char *protocol);
diff --git a/src/lib/ecore_file/ecore_file_private.h b/src/lib/ecore_file/ecore_file_private.h
index 01ea0a4..4c8561d 100644
--- a/src/lib/ecore_file/ecore_file_private.h
+++ b/src/lib/ecore_file/ecore_file_private.h
@@ -5,10 +5,6 @@
5# include <features.h> 5# include <features.h>
6#endif 6#endif
7 7
8#ifdef HAVE_ESCAPE
9# include <Escape.h>
10#endif
11
12#include <sys/types.h> 8#include <sys/types.h>
13#include <sys/stat.h> 9#include <sys/stat.h>
14 10
diff --git a/src/lib/ecore_input_evas/ecore_input_evas_private.h b/src/lib/ecore_input_evas/ecore_input_evas_private.h
index 1e40313..1956e10 100644
--- a/src/lib/ecore_input_evas/ecore_input_evas_private.h
+++ b/src/lib/ecore_input_evas/ecore_input_evas_private.h
@@ -1,5 +1,5 @@
1#ifndef _ECORE_INPUT_PRIVATE_H 1#ifndef _ECORE_INPUT_EVAS_PRIVATE_H
2#define _ECORE_INPUT_PRIVATE_H 2#define _ECORE_INPUT_EVAS_PRIVATE_H
3 3
4extern int _ecore_input_evas_log_dom; 4extern int _ecore_input_evas_log_dom;
5 5
diff --git a/src/lib/ecore_win32/ecore_win32_event.c b/src/lib/ecore_win32/ecore_win32_event.c
index cf6b449..293b168 100644
--- a/src/lib/ecore_win32/ecore_win32_event.c
+++ b/src/lib/ecore_win32/ecore_win32_event.c
@@ -42,6 +42,32 @@ static Ecore_Win32_Key_Mask _ecore_win32_key_mask = 0;
42static Eina_Bool _ecore_win32_ctrl_fake = EINA_FALSE; 42static Eina_Bool _ecore_win32_ctrl_fake = EINA_FALSE;
43static Eina_Bool _ecore_win32_clipboard_has_data = EINA_FALSE; 43static Eina_Bool _ecore_win32_clipboard_has_data = EINA_FALSE;
44 44
45static char *
46_ecore_win32_utf16_to_utf8(const wchar_t *text)
47{
48 char *res;
49 int size;
50
51 /* text is used as an array, hence never NULL */
52
53 size = WideCharToMultiByte(CP_UTF8, 0, text, -1, NULL, 0, NULL, NULL);
54 if (size == 0)
55 return NULL;
56
57 res = (char *)malloc(size * sizeof(char));
58 if (!res)
59 return NULL;
60
61 size = WideCharToMultiByte(CP_UTF8, 0, text, -1, res, size, NULL, NULL);
62 if (size == 0)
63 {
64 free(res);
65 return NULL;
66 }
67
68 return res;
69}
70
45static unsigned int 71static unsigned int
46_ecore_win32_modifiers_get(void) 72_ecore_win32_modifiers_get(void)
47{ 73{
@@ -1176,15 +1202,14 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg,
1176 if (res == -1) 1202 if (res == -1)
1177 { 1203 {
1178 /* dead key, but managed like normal key */ 1204 /* dead key, but managed like normal key */
1205 compose = _ecore_win32_utf16_to_utf8(buf);
1179 } 1206 }
1180 else if (res == 0) 1207 else if (res == 0)
1181 { 1208 {
1182 INF("No translatable character found, skipping"); 1209 INF("No translatable character found, skipping");
1183 if (msg->window_param >= 0x30 && msg->window_param <= 0x39) 1210 if (msg->window_param >= 0x30 && msg->window_param <= 0x39)
1184 { 1211 compose = _ecore_win32_utf16_to_utf8(buf);
1185 buf[0] = msg->window_param; 1212 /* otherwise, compose is NULL */
1186 }
1187 else return NULL;
1188 } 1213 }
1189 else if (res >= 2) 1214 else if (res >= 2)
1190 { 1215 {
@@ -1196,12 +1221,12 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg,
1196 res = ToUnicode(msg->window_param, 1221 res = ToUnicode(msg->window_param,
1197 MapVirtualKey(msg->window_param, MAPVK_VK_TO_CHAR), 1222 MapVirtualKey(msg->window_param, MAPVK_VK_TO_CHAR),
1198 kbd_state, buf, 4, 0); 1223 kbd_state, buf, 4, 0);
1199 if ((res != 1) && (res != -1)) 1224 if (!((res != 1) && (res != -1)))
1200 return NULL; 1225 compose = _ecore_win32_utf16_to_utf8(buf);
1226 /* otherwise, compose is NULL */
1201 } 1227 }
1202 1228 else /* res == 1 : 1 char written to buf */
1203 string[0] = (char)buf[0]; 1229 compose = _ecore_win32_utf16_to_utf8(buf);
1204 compose = string;
1205 1230
1206 /*** key field ***/ 1231 /*** key field ***/
1207 1232
@@ -1232,7 +1257,6 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg,
1232 { 1257 {
1233 buf[0] = msg->window_param; 1258 buf[0] = msg->window_param;
1234 } 1259 }
1235 else return NULL;
1236 } 1260 }
1237 else if (res >= 2) 1261 else if (res >= 2)
1238 { 1262 {
@@ -1303,7 +1327,7 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg,
1303 { 1327 {
1304 buf[0] = msg->window_param; 1328 buf[0] = msg->window_param;
1305 } 1329 }
1306 else return NULL; 1330 else buf[0] = 0;// return NULL;
1307 } 1331 }
1308 else if (res >= 2) 1332 else if (res >= 2)
1309 { 1333 {
@@ -1353,7 +1377,7 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg,
1353 e = (Ecore_Event_Key *)calloc(1, sizeof(Ecore_Event_Key) + 1377 e = (Ecore_Event_Key *)calloc(1, sizeof(Ecore_Event_Key) +
1354 strlen(keyname) + 1 + 1378 strlen(keyname) + 1 +
1355 strlen(key) + 1 + 1379 strlen(key) + 1 +
1356 (compose ? (strlen(compose) + 1) : 0)); 1380 (compose ? strlen(compose) : 0) + 1);
1357 if (!e) 1381 if (!e)
1358 return NULL; 1382 return NULL;
1359 1383
@@ -1366,7 +1390,12 @@ _ecore_win32_event_keystroke_get(Ecore_Win32_Callback_Data *msg,
1366 1390
1367 memcpy((char *)e->keyname, keyname, strlen(keyname)); 1391 memcpy((char *)e->keyname, keyname, strlen(keyname));
1368 memcpy((char *)e->key, key, strlen(key)); 1392 memcpy((char *)e->key, key, strlen(key));
1369 if (compose) memcpy((char *)e->compose, compose, strlen(compose)); 1393 if (compose)
1394 {
1395 memcpy((char *)e->compose, compose, strlen(compose));
1396 free(compose);
1397 }
1398
1370 1399
1371 return e; 1400 return e;
1372} 1401}
diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index b706b4c..0631a5f 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -714,6 +714,47 @@ EAPI Eina_Bool ecore_wl2_display_sync_is_done(const Ecore_Wl2_Display *display);
714EAPI const char *ecore_wl2_display_name_get(const Ecore_Wl2_Display *display); 714EAPI const char *ecore_wl2_display_name_get(const Ecore_Wl2_Display *display);
715 715
716/** 716/**
717 * Finds an Ecore_Wl2_Window based on wl_surface
718 *
719 * @param display The display to search for the window
720 * @param surface The wl_surface of the window to find
721 *
722 * @return The Ecore_Wl2_Window if found, or NULL if no such window exists
723 *
724 * @ingroup Ecore_Wl2_Display_Group
725 * @since 1.24
726 */
727EAPI Ecore_Wl2_Window *ecore_wl2_display_window_find_by_surface(Ecore_Wl2_Display *display, struct wl_surface *surface);
728
729/**
730 * Gets the connected display object
731 *
732 * @brief This function is typically used by clients to get an
733 * ​existing Wayland display.
734 *
735 * ​@param name The display target name. If @c NULL, the default
736 * display is assumed.
737 *
738 * ​@return The Ecore_Wl2_Display which was connected to
739 *
740 * ​@ingroup Ecore_Wl2_Display_Group
741 * ​@since 1.24
742 */
743EAPI Ecore_Wl2_Display *ecore_wl2_connected_display_get(const char *name);
744
745/**
746 * Gets the wl_compositor which belongs to this display
747 *
748 * @param display The Ecore_Wl2_Display to get the compositor of
749 *
750 * @return The wl_compositor associated with this display
751 *
752 * @ingroup Ecore_Wl2_Display_Group
753 * @since 1.24
754 */
755EAPI struct wl_compositor *ecore_wl2_display_compositor_get(Ecore_Wl2_Display *display);
756
757/**
717 * @defgroup Ecore_Wl2_Window_Group Wayland Library Window Functions 758 * @defgroup Ecore_Wl2_Window_Group Wayland Library Window Functions
718 * @ingroup Ecore_Wl2_Group 759 * @ingroup Ecore_Wl2_Group
719 * 760 *
@@ -780,6 +821,13 @@ EAPI int ecore_wl2_window_surface_id_get(Ecore_Wl2_Window *window);
780EAPI void ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int aspect); 821EAPI void ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int aspect);
781 822
782/** 823/**
824 * @see evas_object_size_hint_aspect_get
825 * @ingroup Ecore_Wl2_Window_Group
826 * @since 1.24
827 */
828EAPI void ecore_wl2_window_aspect_get(Ecore_Wl2_Window *window, int *w, int *h, unsigned int *aspect);
829
830/**
783 * Show a given Ecore_Wl2_Window 831 * Show a given Ecore_Wl2_Window
784 * 832 *
785 * @param window The Ecore_Wl2_Window to show 833 * @param window The Ecore_Wl2_Window to show
@@ -968,6 +1016,18 @@ EAPI void ecore_wl2_window_rotation_set(Ecore_Wl2_Window *window, int rotation);
968EAPI void ecore_wl2_window_title_set(Ecore_Wl2_Window *window, const char *title); 1016EAPI void ecore_wl2_window_title_set(Ecore_Wl2_Window *window, const char *title);
969 1017
970/** 1018/**
1019 * Get the title of a given window
1020 *
1021 * @param window The window to set the title of
1022 *
1023 * @return A string if found, or NULL otherwise
1024 *
1025 * @ingroup Ecore_Wl2_Window_Group
1026 * @since 1.24
1027 */
1028EAPI const char *ecore_wl2_window_title_get(Ecore_Wl2_Window *window);
1029
1030/**
971 * Set the class of a given window 1031 * Set the class of a given window
972 * 1032 *
973 * @param window The window to set the class of 1033 * @param window The window to set the class of
@@ -978,6 +1038,19 @@ EAPI void ecore_wl2_window_title_set(Ecore_Wl2_Window *window, const char *title
978 */ 1038 */
979EAPI void ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas); 1039EAPI void ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas);
980 1040
1041
1042/**
1043 * Get the class of a given window
1044 *
1045 * @param window The window to set the class of
1046 *
1047 * @return A string if found, or NULL otherwise
1048 *
1049 * @ingroup Ecore_Wl2_Window_Group
1050 * @since 1.24
1051 */
1052EAPI const char *ecore_wl2_window_class_get(Ecore_Wl2_Window *window);
1053
981/** 1054/**
982 * Get the geometry of a given window 1055 * Get the geometry of a given window
983 * 1056 *
@@ -1037,27 +1110,26 @@ EAPI void ecore_wl2_window_iconified_set(Ecore_Wl2_Window *window, Eina_Bool ico
1037EAPI void ecore_wl2_window_type_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Type type); 1110EAPI void ecore_wl2_window_type_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Type type);
1038 1111
1039/** 1112/**
1040 * Find the output that a given window is on 1113 * Get the type of a given window
1041 * 1114 *
1042 * @param window The window to find the output for 1115 * @see Ecore_Wl2_Window_Type
1043 *
1044 * @return An Ecore_Wl2_Output if found, or NULL otherwise
1045 * 1116 *
1046 * @ingroup Ecore_Wl2_Window_Group 1117 * @ingroup Ecore_Wl2_Window_Group
1047 * @since 1.20 1118 * @since 1.24
1048 */ 1119 */
1049EAPI Ecore_Wl2_Output *ecore_wl2_window_output_find(Ecore_Wl2_Window *window); 1120EAPI Ecore_Wl2_Window_Type ecore_wl2_window_type_get(Ecore_Wl2_Window *window);
1050 1121
1051/** 1122/**
1052 * Set a buffer transform on a given window 1123 * Find the output that a given window is on
1124 *
1125 * @param window The window to find the output for
1053 * 1126 *
1054 * @param window The window on which to set the buffer transform 1127 * @return An Ecore_Wl2_Output if found, or NULL otherwise
1055 * @param transform The buffer transform being requested
1056 * 1128 *
1057 * @ingroup Ecore_Wl2_Window_Group 1129 * @ingroup Ecore_Wl2_Window_Group
1058 * @since 1.20 1130 * @since 1.20
1059 */ 1131 */
1060EAPI void ecore_wl2_window_buffer_transform_set(Ecore_Wl2_Window *window, int transform); 1132EAPI Ecore_Wl2_Output *ecore_wl2_window_output_find(Ecore_Wl2_Window *window);
1061 1133
1062/** 1134/**
1063 * Set if window rotation is supported by the window manager 1135 * Set if window rotation is supported by the window manager
@@ -1287,6 +1359,18 @@ EAPI Eina_Bool ecore_wl2_window_focus_skip_get(Ecore_Wl2_Window *window);
1287EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role); 1359EAPI void ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role);
1288 1360
1289/** 1361/**
1362 * Get the role of a given window
1363 *
1364 * @param window The window to set the class role
1365 *
1366 * @return A string if found, or NULL otherwise
1367 *
1368 * @ingroup Ecore_Wl2_Window_Group
1369 * @since 1.24
1370 */
1371EAPI const char *ecore_wl2_window_role_get(Ecore_Wl2_Window *window);
1372
1373/**
1290 * Set if a given window is in floating mode 1374 * Set if a given window is in floating mode
1291 * 1375 *
1292 * @param window The window to set floating mode on 1376 * @param window The window to set floating mode on
@@ -1310,6 +1394,16 @@ EAPI void ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool
1310EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window); 1394EAPI Eina_Bool ecore_wl2_window_floating_mode_get(Ecore_Wl2_Window *window);
1311 1395
1312/** 1396/**
1397 * Finds a window by surface
1398 *
1399 * @param surface The surface to find the window of
1400 *
1401 * @ingroup Ecore_Wl2_Window_Group
1402 * @since 1.24
1403 */
1404EAPI Ecore_Wl2_Window *ecore_wl2_window_surface_find(struct wl_surface *surface);
1405
1406/**
1313 * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions 1407 * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions
1314 * @ingroup Ecore_Wl2_Group 1408 * @ingroup Ecore_Wl2_Group
1315 * 1409 *
@@ -1945,24 +2039,6 @@ EAPI Ecore_Wl2_Frame_Cb_Handle *ecore_wl2_window_frame_callback_add(Ecore_Wl2_Wi
1945EAPI void ecore_wl2_window_frame_callback_del(Ecore_Wl2_Frame_Cb_Handle *handle); 2039EAPI void ecore_wl2_window_frame_callback_del(Ecore_Wl2_Frame_Cb_Handle *handle);
1946 2040
1947/** 2041/**
1948 * Attach a buffer to a window
1949 *
1950 * Note that the GL stack my attach buffers to a surface - we should call this
1951 * function at that time (with a NULL buffer) to track whether a surface
1952 * has a valid buffer. That is, call with implicit true and buffer NULL at
1953 * the time of glSwapBuffers.
1954 *
1955 * @param window The target window
1956 * @param buffer The buffer to attach
1957 * @param x X offset from corner
1958 * @param y Y offset from corner
1959 * @param implicit True if an external library is doing the actual attaching
1960 *
1961 * @since 1.21
1962 */
1963EAPI void ecore_wl2_window_buffer_attach(Ecore_Wl2_Window *win, void *buffer, int x, int y, Eina_Bool implicit);
1964
1965/**
1966 * Push buffered wayland protocol to compositor 2042 * Push buffered wayland protocol to compositor
1967 * 2043 *
1968 * Wayland protocol is only actually sent when a flush occurs, 2044 * Wayland protocol is only actually sent when a flush occurs,
@@ -2003,39 +2079,6 @@ EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
2003 */ 2079 */
2004EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window); 2080EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
2005 2081
2006/* TODO: doxygen if we are keeping any of the below functions public */
2007EAPI void ecore_wl2_window_damage(Ecore_Wl2_Window *window, Eina_Rectangle *rects, unsigned int count);
2008
2009EAPI Eina_Bool ecore_wl2_buffer_init(Ecore_Wl2_Display *ewd, Ecore_Wl2_Buffer_Type types);
2010EAPI Ecore_Wl2_Buffer *ecore_wl2_buffer_create(Ecore_Wl2_Display *ewd, int w, int h, Eina_Bool alpha);
2011EAPI void ecore_wl2_buffer_destroy(Ecore_Wl2_Buffer *b);
2012EAPI struct wl_buffer *ecore_wl2_buffer_wl_buffer_get(Ecore_Wl2_Buffer *buf);
2013EAPI void *ecore_wl2_buffer_map(Ecore_Wl2_Buffer *buf, int *w, int *h, int *stride);
2014EAPI void ecore_wl2_buffer_unmap(Ecore_Wl2_Buffer *buf);
2015EAPI void ecore_wl2_buffer_discard(Ecore_Wl2_Buffer *buf);
2016EAPI void ecore_wl2_buffer_lock(Ecore_Wl2_Buffer *b);
2017EAPI void ecore_wl2_buffer_unlock(Ecore_Wl2_Buffer *b);
2018EAPI void ecore_wl2_buffer_destroy(Ecore_Wl2_Buffer *b);
2019EAPI Eina_Bool ecore_wl2_buffer_busy_get(Ecore_Wl2_Buffer *buffer);
2020EAPI void ecore_wl2_buffer_busy_set(Ecore_Wl2_Buffer *buffer);
2021EAPI int ecore_wl2_buffer_age_get(Ecore_Wl2_Buffer *buffer);
2022EAPI void ecore_wl2_buffer_age_set(Ecore_Wl2_Buffer *buffer, int age);
2023EAPI void ecore_wl2_buffer_age_inc(Ecore_Wl2_Buffer *buffer);
2024
2025EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
2026EAPI void ecore_wl2_surface_destroy(Ecore_Wl2_Surface *surface);
2027EAPI void ecore_wl2_surface_reconfigure(Ecore_Wl2_Surface *surface, int w, int h, uint32_t flags, Eina_Bool alpha);
2028EAPI void *ecore_wl2_surface_data_get(Ecore_Wl2_Surface *surface, int *w, int *h);
2029EAPI int ecore_wl2_surface_assign(Ecore_Wl2_Surface *surface);
2030EAPI void ecore_wl2_surface_post(Ecore_Wl2_Surface *surface, Eina_Rectangle *rects, unsigned int count);
2031EAPI void ecore_wl2_surface_flush(Ecore_Wl2_Surface *surface, Eina_Bool purge);
2032EAPI void ecore_wl2_window_surface_flush(Ecore_Wl2_Window *window, Eina_Bool purge);
2033EAPI Ecore_Wl2_Buffer *ecore_wl2_surface_buffer_create(Ecore_Wl2_Surface *surface);
2034EAPI int ecore_wl2_surface_manager_add(Ecore_Wl2_Surface_Interface *intf);
2035EAPI void ecore_wl2_surface_manager_del(Ecore_Wl2_Surface_Interface *intf);
2036EAPI Ecore_Wl2_Window *ecore_wl2_surface_window_get(Ecore_Wl2_Surface *surface);
2037EAPI Eina_Bool ecore_wl2_surface_alpha_get(Ecore_Wl2_Surface *surface);
2038
2039# endif 2082# endif
2040 2083
2041# undef EAPI 2084# undef EAPI
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index 3219baa..d14b14a 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -71,9 +71,9 @@ _ecore_wl2_surface_modules_init(void)
71 const char *mod_dir; 71 const char *mod_dir;
72 72
73#ifdef NEED_RUN_IN_TREE 73#ifdef NEED_RUN_IN_TREE
74#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) 74# if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
75 if (getuid() == geteuid()) 75 if (getuid() == geteuid())
76#endif 76# endif
77 { 77 {
78 char path[PATH_MAX]; 78 char path[PATH_MAX];
79 //when running in tree we are ignoring all the settings 79 //when running in tree we are ignoring all the settings
diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c
index a1511c4..cc92b8f 100644
--- a/src/lib/ecore_wl2/ecore_wl2_display.c
+++ b/src/lib/ecore_wl2/ecore_wl2_display.c
@@ -1163,3 +1163,47 @@ ecore_wl2_display_flush(Ecore_Wl2_Display *display)
1163 1163
1164 _begin_recovery_maybe(display, code); 1164 _begin_recovery_maybe(display, code);
1165} 1165}
1166
1167EAPI Ecore_Wl2_Window *
1168ecore_wl2_display_window_find_by_surface(Ecore_Wl2_Display *display, struct wl_surface *surface)
1169{
1170 return _ecore_wl2_display_window_surface_find(display, surface);
1171}
1172
1173EAPI Ecore_Wl2_Display *
1174ecore_wl2_connected_display_get(const char *name)
1175{
1176 Ecore_Wl2_Display *ewd;
1177
1178 EINA_SAFETY_ON_NULL_RETURN_VAL(_client_displays, NULL);
1179
1180 if (!name)
1181 {
1182 const char *n;
1183
1184 /* client wants to connected to default display */
1185 n = getenv("WAYLAND_DISPLAY");
1186 if (!n) n = "wayland-0";
1187
1188 /* we have a default wayland display */
1189
1190 /* check hash of cached client displays for this name */
1191 ewd = eina_hash_find(_client_displays, n);
1192 }
1193 else
1194 {
1195 /* client wants to connect to specific display */
1196
1197 /* check hash of cached client displays for this name */
1198 ewd = eina_hash_find(_client_displays, name);
1199 }
1200
1201 return ewd;
1202}
1203
1204EAPI struct wl_compositor *
1205ecore_wl2_display_compositor_get(Ecore_Wl2_Display *display)
1206{
1207 EINA_SAFETY_ON_NULL_RETURN_VAL(display, NULL);
1208 return display->wl.compositor;
1209}
diff --git a/src/lib/ecore_wl2/ecore_wl2_internal.h b/src/lib/ecore_wl2/ecore_wl2_internal.h
index 460d5fc..2b6a965 100644
--- a/src/lib/ecore_wl2/ecore_wl2_internal.h
+++ b/src/lib/ecore_wl2/ecore_wl2_internal.h
@@ -40,6 +40,66 @@ EAPI void ecore_wl2_window_rotation_change_done_send(Ecore_Wl2_Window *window, i
40EAPI void ecore_wl2_window_false_commit(Ecore_Wl2_Window *window); 40EAPI void ecore_wl2_window_false_commit(Ecore_Wl2_Window *window);
41EAPI Eina_Bool ecore_wl2_buffer_fit(Ecore_Wl2_Buffer *b, int w, int h); 41EAPI Eina_Bool ecore_wl2_buffer_fit(Ecore_Wl2_Buffer *b, int w, int h);
42 42
43EAPI void ecore_wl2_window_damage(Ecore_Wl2_Window *window, Eina_Rectangle *rects, unsigned int count);
44EAPI Eina_Bool ecore_wl2_buffer_init(Ecore_Wl2_Display *ewd, Ecore_Wl2_Buffer_Type types);
45EAPI Ecore_Wl2_Buffer *ecore_wl2_buffer_create(Ecore_Wl2_Display *ewd, int w, int h, Eina_Bool alpha);
46EAPI void ecore_wl2_buffer_destroy(Ecore_Wl2_Buffer *b);
47EAPI struct wl_buffer *ecore_wl2_buffer_wl_buffer_get(Ecore_Wl2_Buffer *buf);
48EAPI void *ecore_wl2_buffer_map(Ecore_Wl2_Buffer *buf, int *w, int *h, int *stride);
49EAPI void ecore_wl2_buffer_unmap(Ecore_Wl2_Buffer *buf);
50EAPI void ecore_wl2_buffer_discard(Ecore_Wl2_Buffer *buf);
51EAPI void ecore_wl2_buffer_lock(Ecore_Wl2_Buffer *b);
52EAPI void ecore_wl2_buffer_unlock(Ecore_Wl2_Buffer *b);
53EAPI void ecore_wl2_buffer_destroy(Ecore_Wl2_Buffer *b);
54EAPI Eina_Bool ecore_wl2_buffer_busy_get(Ecore_Wl2_Buffer *buffer);
55EAPI void ecore_wl2_buffer_busy_set(Ecore_Wl2_Buffer *buffer);
56EAPI int ecore_wl2_buffer_age_get(Ecore_Wl2_Buffer *buffer);
57EAPI void ecore_wl2_buffer_age_set(Ecore_Wl2_Buffer *buffer, int age);
58EAPI void ecore_wl2_buffer_age_inc(Ecore_Wl2_Buffer *buffer);
59
60EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
61EAPI void ecore_wl2_surface_destroy(Ecore_Wl2_Surface *surface);
62EAPI void ecore_wl2_surface_reconfigure(Ecore_Wl2_Surface *surface, int w, int h, uint32_t flags, Eina_Bool alpha);
63EAPI void *ecore_wl2_surface_data_get(Ecore_Wl2_Surface *surface, int *w, int *h);
64EAPI int ecore_wl2_surface_assign(Ecore_Wl2_Surface *surface);
65EAPI void ecore_wl2_surface_post(Ecore_Wl2_Surface *surface, Eina_Rectangle *rects, unsigned int count);
66EAPI void ecore_wl2_surface_flush(Ecore_Wl2_Surface *surface, Eina_Bool purge);
67EAPI void ecore_wl2_window_surface_flush(Ecore_Wl2_Window *window, Eina_Bool purge);
68EAPI Ecore_Wl2_Buffer *ecore_wl2_surface_buffer_create(Ecore_Wl2_Surface *surface);
69EAPI int ecore_wl2_surface_manager_add(Ecore_Wl2_Surface_Interface *intf);
70EAPI void ecore_wl2_surface_manager_del(Ecore_Wl2_Surface_Interface *intf);
71EAPI Ecore_Wl2_Window *ecore_wl2_surface_window_get(Ecore_Wl2_Surface *surface);
72EAPI Eina_Bool ecore_wl2_surface_alpha_get(Ecore_Wl2_Surface *surface);
73
74/**
75 * Attach a buffer to a window
76 *
77 * Note that the GL stack my attach buffers to a surface - we should call this
78 * function at that time (with a NULL buffer) to track whether a surface
79 * has a valid buffer. That is, call with implicit true and buffer NULL at
80 * the time of glSwapBuffers.
81 *
82 * @param window The target window
83 * @param buffer The buffer to attach
84 * @param x X offset from corner
85 * @param y Y offset from corner
86 * @param implicit True if an external library is doing the actual attaching
87 *
88 * @since 1.21
89 */
90EAPI void ecore_wl2_window_buffer_attach(Ecore_Wl2_Window *win, void *buffer, int x, int y, Eina_Bool implicit);
91
92/**
93 * Set a buffer transform on a given window
94 *
95 * @param window The window on which to set the buffer transform
96 * @param transform The buffer transform being requested
97 *
98 * @ingroup Ecore_Wl2_Window_Group
99 * @since 1.20
100 */
101EAPI void ecore_wl2_window_buffer_transform_set(Ecore_Wl2_Window *window, int transform);
102
43# undef EAPI 103# undef EAPI
44# define EAPI 104# define EAPI
45 105
diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h
index 1f4eaad..5178e8f 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -570,6 +570,9 @@ typedef struct _Ecore_Wl2_Surface
570 Eina_Bool alpha : 1; 570 Eina_Bool alpha : 1;
571} Ecore_Wl2_Surface; 571} Ecore_Wl2_Surface;
572 572
573EAPI extern int _ecore_wl2_event_window_www;
574EAPI extern int _ecore_wl2_event_window_www_drag;
575
573Ecore_Wl2_Window *_ecore_wl2_display_window_surface_find(Ecore_Wl2_Display *display, struct wl_surface *wl_surface); 576Ecore_Wl2_Window *_ecore_wl2_display_window_surface_find(Ecore_Wl2_Display *display, struct wl_surface *wl_surface);
574void _display_event_free(void *d, void *event EINA_UNUSED); 577void _display_event_free(void *d, void *event EINA_UNUSED);
575 578
@@ -609,9 +612,6 @@ void _ecore_wl2_buffer_test(Ecore_Wl2_Display *ewd);
609 612
610EAPI void ecore_wl2_window_weight_set(Ecore_Wl2_Window *window, double w, double h); 613EAPI void ecore_wl2_window_weight_set(Ecore_Wl2_Window *window, double w, double h);
611 614
612EAPI extern int _ecore_wl2_event_window_www;
613EAPI extern int _ecore_wl2_event_window_www_drag;
614
615Ecore_Wl2_Output *_ecore_wl2_output_find(Ecore_Wl2_Display *dsp, struct wl_output *op); 615Ecore_Wl2_Output *_ecore_wl2_output_find(Ecore_Wl2_Display *dsp, struct wl_output *op);
616 616
617#endif 617#endif
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c
index 9793833..0085354 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -1017,6 +1017,14 @@ ecore_wl2_window_title_set(Ecore_Wl2_Window *window, const char *title)
1017 ecore_wl2_display_flush(window->display); 1017 ecore_wl2_display_flush(window->display);
1018} 1018}
1019 1019
1020EAPI const char *
1021ecore_wl2_window_title_get(Ecore_Wl2_Window *window)
1022{
1023 EINA_SAFETY_ON_NULL_RETURN_VAL(window, NULL);
1024
1025 return window->title ? window->title : NULL;
1026}
1027
1020EAPI void 1028EAPI void
1021ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas) 1029ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas)
1022{ 1030{
@@ -1033,6 +1041,14 @@ ecore_wl2_window_class_set(Ecore_Wl2_Window *window, const char *clas)
1033 ecore_wl2_display_flush(window->display); 1041 ecore_wl2_display_flush(window->display);
1034} 1042}
1035 1043
1044EAPI const char *
1045ecore_wl2_window_class_get(Ecore_Wl2_Window *window)
1046{
1047 EINA_SAFETY_ON_NULL_RETURN_VAL(window, NULL);
1048
1049 return window->class ? window->class : NULL;
1050}
1051
1036EAPI void 1052EAPI void
1037ecore_wl2_window_geometry_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h) 1053ecore_wl2_window_geometry_get(Ecore_Wl2_Window *window, int *x, int *y, int *w, int *h)
1038{ 1054{
@@ -1367,6 +1383,14 @@ ecore_wl2_window_role_set(Ecore_Wl2_Window *window, const char *role)
1367 eina_stringshare_replace(&window->role, role); 1383 eina_stringshare_replace(&window->role, role);
1368} 1384}
1369 1385
1386EAPI const char *
1387ecore_wl2_window_role_get(Ecore_Wl2_Window *window)
1388{
1389 EINA_SAFETY_ON_NULL_RETURN_VAL(window, NULL);
1390
1391 return window->role ? window->role : NULL;
1392}
1393
1370EAPI void 1394EAPI void
1371ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating) 1395ecore_wl2_window_floating_mode_set(Ecore_Wl2_Window *window, Eina_Bool floating)
1372{ 1396{
@@ -1404,6 +1428,16 @@ ecore_wl2_window_aspect_set(Ecore_Wl2_Window *window, int w, int h, unsigned int
1404} 1428}
1405 1429
1406EAPI void 1430EAPI void
1431ecore_wl2_window_aspect_get(Ecore_Wl2_Window *window, int *w, int *h, unsigned int *aspect)
1432{
1433 EINA_SAFETY_ON_NULL_RETURN(window);
1434
1435 if (w) *w = window->aspect.w;
1436 if (h) *h = window->aspect.h;
1437 if (aspect) *aspect = window->aspect.aspect;
1438}
1439
1440EAPI void
1407ecore_wl2_window_weight_set(Ecore_Wl2_Window *window, double w, double h) 1441ecore_wl2_window_weight_set(Ecore_Wl2_Window *window, double w, double h)
1408{ 1442{
1409 int ww, hh; 1443 int ww, hh;
@@ -1741,3 +1775,25 @@ ecore_wl2_window_surface_flush(Ecore_Wl2_Window *window, Eina_Bool purge)
1741 if (!window->wl2_surface) return; 1775 if (!window->wl2_surface) return;
1742 ecore_wl2_surface_flush(window->wl2_surface, purge); 1776 ecore_wl2_surface_flush(window->wl2_surface, purge);
1743} 1777}
1778
1779EAPI Ecore_Wl2_Window_Type
1780ecore_wl2_window_type_get(Ecore_Wl2_Window *window)
1781{
1782 EINA_SAFETY_ON_NULL_RETURN_VAL(window, ECORE_WL2_WINDOW_TYPE_NONE);
1783 return window->type;
1784}
1785
1786EAPI Ecore_Wl2_Window *
1787ecore_wl2_window_surface_find(struct wl_surface *surface)
1788{
1789 Ecore_Wl2_Display *ewd;
1790 Ecore_Wl2_Window *win;
1791
1792 EINA_SAFETY_ON_NULL_RETURN_VAL(surface, NULL);
1793
1794 ewd = ecore_wl2_connected_display_get(NULL);
1795 EINA_SAFETY_ON_NULL_RETURN_VAL(ewd, NULL);
1796
1797 win = ecore_wl2_display_window_find_by_surface(ewd, surface);
1798 return win;
1799}
diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 223bc91..b58520c 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -1197,6 +1197,8 @@ EAPI extern int ECORE_X_RAW_BUTTON_PRESS; /**< @since 1.8 */
1197EAPI extern int ECORE_X_RAW_BUTTON_RELEASE; /**< @since 1.8 */ 1197EAPI extern int ECORE_X_RAW_BUTTON_RELEASE; /**< @since 1.8 */
1198EAPI extern int ECORE_X_RAW_MOTION; /**< @since 1.8 */ 1198EAPI extern int ECORE_X_RAW_MOTION; /**< @since 1.8 */
1199 1199
1200EAPI extern int ECORE_X_DEVICES_CHANGE; /**< @since 1.24 */
1201
1200typedef enum _Ecore_X_WM_Protocol 1202typedef enum _Ecore_X_WM_Protocol
1201{ 1203{
1202 /** If enabled the window manager will be asked to send a 1204 /** If enabled the window manager will be asked to send a
@@ -2568,6 +2570,15 @@ EAPI Eina_Bool ecore_x_input_raw_select(Ecore_X_Window win); /**< @since 1.8
2568EAPI Eina_Bool ecore_x_input_touch_devices_grab(Ecore_X_Window win); /**< @since 1.15 */ 2570EAPI Eina_Bool ecore_x_input_touch_devices_grab(Ecore_X_Window win); /**< @since 1.15 */
2569EAPI Eina_Bool ecore_x_input_touch_devices_ungrab(void); /**< @since 1.15 */ 2571EAPI Eina_Bool ecore_x_input_touch_devices_ungrab(void); /**< @since 1.15 */
2570 2572
2573EAPI void ecore_x_input_devices_update(void); /**< @since 1.24 */
2574EAPI int ecore_x_input_device_num_get(void); /**< @since 1.24 */
2575EAPI int ecore_x_input_device_id_get(int slot); /**< @since 1.24 */
2576EAPI const char *ecore_x_input_device_name_get(int slot); /**< @since 1.24 */
2577EAPI char **ecore_x_input_device_properties_list(int slot, int *num_ret); /**< @since 1.24 */
2578EAPI void ecore_x_input_device_properties_free(char **list, int num); /**< @since 1.24 */
2579EAPI void *ecore_x_input_device_property_get(int slot, const char *prop, int *num_ret, Ecore_X_Atom *format_ret, int *unit_size_ret); /**< @since 1.24 */
2580EAPI void ecore_x_input_device_property_set(int slot, const char *prop, void *data, int num, Ecore_X_Atom format, int unit_size); /**< @since 1.24 */
2581
2571EAPI Eina_Bool ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win); 2582EAPI Eina_Bool ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win);
2572 2583
2573typedef enum _Ecore_X_Gesture_Event_Mask 2584typedef enum _Ecore_X_Gesture_Event_Mask
@@ -2702,15 +2713,11 @@ struct _Ecore_X_Event_Gesture_Notify_Group
2702 int group_id; 2713 int group_id;
2703}; 2714};
2704 2715
2705EAPI Eina_Bool ecore_x_gesture_supported(void); 2716EINA_DEPRECATED EAPI Eina_Bool ecore_x_gesture_supported(void);
2706 2717EINA_DEPRECATED EAPI Eina_Bool ecore_x_gesture_events_select(Ecore_X_Window win, Ecore_X_Gesture_Event_Mask mask);
2707EAPI Eina_Bool ecore_x_gesture_events_select(Ecore_X_Window win, Ecore_X_Gesture_Event_Mask mask); 2718EINA_DEPRECATED EAPI Ecore_X_Gesture_Event_Mask ecore_x_gesture_events_selected_get(Ecore_X_Window win);
2708 2719EINA_DEPRECATED EAPI Eina_Bool ecore_x_gesture_event_grab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2709EAPI Ecore_X_Gesture_Event_Mask ecore_x_gesture_events_selected_get(Ecore_X_Window win); 2720EINA_DEPRECATED EAPI Eina_Bool ecore_x_gesture_event_ungrab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2710
2711EAPI Eina_Bool ecore_x_gesture_event_grab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2712
2713EAPI Eina_Bool ecore_x_gesture_event_ungrab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2714 2721
2715EAPI void ecore_x_e_illume_indicator_state_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_State state); 2722EAPI void ecore_x_e_illume_indicator_state_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_State state);
2716EAPI Ecore_X_Illume_Indicator_State ecore_x_e_illume_indicator_state_get(Ecore_X_Window win); 2723EAPI Ecore_X_Illume_Indicator_State ecore_x_e_illume_indicator_state_get(Ecore_X_Window win);
diff --git a/src/lib/ecore_x/Ecore_X_Atoms.h b/src/lib/ecore_x/Ecore_X_Atoms.h
index 15c8037..35f3a88 100644
--- a/src/lib/ecore_x/Ecore_X_Atoms.h
+++ b/src/lib/ecore_x/Ecore_X_Atoms.h
@@ -9,6 +9,8 @@
9/* generic atoms */ 9/* generic atoms */
10EAPI extern Ecore_X_Atom ECORE_X_ATOM_ATOM; 10EAPI extern Ecore_X_Atom ECORE_X_ATOM_ATOM;
11EAPI extern Ecore_X_Atom ECORE_X_ATOM_CARDINAL; 11EAPI extern Ecore_X_Atom ECORE_X_ATOM_CARDINAL;
12EAPI extern Ecore_X_Atom ECORE_X_ATOM_INTEGER; /**< @since 1.24 */
13EAPI extern Ecore_X_Atom ECORE_X_ATOM_FLOAT; /**< @since 1.24 */
12EAPI extern Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT; 14EAPI extern Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT;
13EAPI extern Ecore_X_Atom ECORE_X_ATOM_FILE_NAME; 15EAPI extern Ecore_X_Atom ECORE_X_ATOM_FILE_NAME;
14EAPI extern Ecore_X_Atom ECORE_X_ATOM_STRING; 16EAPI extern Ecore_X_Atom ECORE_X_ATOM_STRING;
diff --git a/src/lib/ecore_x/ecore_x.c b/src/lib/ecore_x/ecore_x.c
index a32f42f..ff603bb 100644
--- a/src/lib/ecore_x/ecore_x.c
+++ b/src/lib/ecore_x/ecore_x.c
@@ -61,9 +61,6 @@ static int _ecore_x_event_fixes_selection_id = 0;
61#ifdef ECORE_XDAMAGE 61#ifdef ECORE_XDAMAGE
62static int _ecore_x_event_damage_id = 0; 62static int _ecore_x_event_damage_id = 0;
63#endif /* ifdef ECORE_XDAMAGE */ 63#endif /* ifdef ECORE_XDAMAGE */
64#ifdef ECORE_XGESTURE
65static int _ecore_x_event_gesture_id = 0;
66#endif /* ifdef ECORE_XGESTURE */
67#ifdef ECORE_XKB 64#ifdef ECORE_XKB
68static int _ecore_x_event_xkb_id = 0; 65static int _ecore_x_event_xkb_id = 0;
69#endif /* ifdef ECORE_XKB */ 66#endif /* ifdef ECORE_XKB */
@@ -167,6 +164,8 @@ EAPI int ECORE_X_RAW_BUTTON_PRESS = 0;
167EAPI int ECORE_X_RAW_BUTTON_RELEASE = 0; 164EAPI int ECORE_X_RAW_BUTTON_RELEASE = 0;
168EAPI int ECORE_X_RAW_MOTION = 0; 165EAPI int ECORE_X_RAW_MOTION = 0;
169 166
167EAPI int ECORE_X_DEVICES_CHANGE = 0;
168
170#ifdef LOGRT 169#ifdef LOGRT
171static double t0 = 0.0; 170static double t0 = 0.0;
172static Status (*_logrt_real_reply)(Display *disp, 171static Status (*_logrt_real_reply)(Display *disp,
@@ -406,10 +405,6 @@ _ecore_x_init2(void)
406 int damage_base = 0; 405 int damage_base = 0;
407 int damage_err_base = 0; 406 int damage_err_base = 0;
408#endif /* ifdef ECORE_XDAMAGE */ 407#endif /* ifdef ECORE_XDAMAGE */
409#ifdef ECORE_XGESTURE
410 int gesture_base = 0;
411 int gesture_err_base = 0;
412#endif /* ifdef ECORE_XGESTURE */
413#ifdef ECORE_XKB 408#ifdef ECORE_XKB
414 int xkb_base = 0; 409 int xkb_base = 0;
415#endif /* ifdef ECORE_XKB */ 410#endif /* ifdef ECORE_XKB */
@@ -468,12 +463,6 @@ _ecore_x_init2(void)
468 ECORE_X_EVENT_HANDLERS_GROW(damage_base, XDamageNumberEvents); 463 ECORE_X_EVENT_HANDLERS_GROW(damage_base, XDamageNumberEvents);
469#endif /* ifdef ECORE_XDAMAGE */ 464#endif /* ifdef ECORE_XDAMAGE */
470 465
471#ifdef ECORE_XGESTURE
472 if (XGestureQueryExtension(_ecore_x_disp, &gesture_base, &gesture_err_base))
473 _ecore_x_event_gesture_id = gesture_base;
474
475 ECORE_X_EVENT_HANDLERS_GROW(gesture_base, GestureNumberEvents);
476#endif /* ifdef ECORE_XGESTURE */
477#ifdef ECORE_XKB 466#ifdef ECORE_XKB
478 { 467 {
479 int dummy; 468 int dummy;
@@ -575,20 +564,6 @@ _ecore_x_init2(void)
575 _ecore_x_event_handlers[_ecore_x_event_xkb_id] = _ecore_x_event_handle_xkb; 564 _ecore_x_event_handlers[_ecore_x_event_xkb_id] = _ecore_x_event_handle_xkb;
576#endif /* ifdef ECORE_XKB */ 565#endif /* ifdef ECORE_XKB */
577 566
578#ifdef ECORE_XGESTURE
579 if (_ecore_x_event_gesture_id)
580 {
581 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyFlick] = _ecore_x_event_handle_gesture_notify_flick;
582 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyPan] = _ecore_x_event_handle_gesture_notify_pan;
583 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyPinchRotation] = _ecore_x_event_handle_gesture_notify_pinchrotation;
584 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyTap] = _ecore_x_event_handle_gesture_notify_tap;
585 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyTapNHold] = _ecore_x_event_handle_gesture_notify_tapnhold;
586 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyHold] = _ecore_x_event_handle_gesture_notify_hold;
587 _ecore_x_event_handlers[_ecore_x_event_gesture_id + GestureNotifyGroup] = _ecore_x_event_handle_gesture_notify_group;
588 }
589
590#endif /* ifdef ECORE_XGESTURE */
591
592 ECORE_X_EVENT_ANY = ecore_event_type_new(); 567 ECORE_X_EVENT_ANY = ecore_event_type_new();
593 ECORE_X_EVENT_MOUSE_IN = ecore_event_type_new(); 568 ECORE_X_EVENT_MOUSE_IN = ecore_event_type_new();
594 ECORE_X_EVENT_MOUSE_OUT = ecore_event_type_new(); 569 ECORE_X_EVENT_MOUSE_OUT = ecore_event_type_new();
@@ -655,6 +630,8 @@ _ecore_x_init2(void)
655 ECORE_X_RAW_BUTTON_RELEASE = ecore_event_type_new(); 630 ECORE_X_RAW_BUTTON_RELEASE = ecore_event_type_new();
656 ECORE_X_RAW_MOTION = ecore_event_type_new(); 631 ECORE_X_RAW_MOTION = ecore_event_type_new();
657 632
633 ECORE_X_DEVICES_CHANGE = ecore_event_type_new();
634
658 _ecore_x_modifiers_get(); 635 _ecore_x_modifiers_get();
659 636
660 _ecore_x_atoms_init(); 637 _ecore_x_atoms_init();
@@ -687,7 +664,6 @@ _ecore_x_init2(void)
687 _ecore_x_present_init(); 664 _ecore_x_present_init();
688 _ecore_x_dpms_init(); 665 _ecore_x_dpms_init();
689 _ecore_x_randr_init(); 666 _ecore_x_randr_init();
690 _ecore_x_gesture_init();
691 _ecore_x_input_init(); 667 _ecore_x_input_init();
692 _ecore_x_events_init(); 668 _ecore_x_events_init();
693 669
diff --git a/src/lib/ecore_x/ecore_x_atoms_decl.h b/src/lib/ecore_x/ecore_x_atoms_decl.h
index 78545c7..c4d8ead 100644
--- a/src/lib/ecore_x/ecore_x_atoms_decl.h
+++ b/src/lib/ecore_x/ecore_x_atoms_decl.h
@@ -1,6 +1,8 @@
1/* generic atoms */ 1/* generic atoms */
2EAPI Ecore_X_Atom ECORE_X_ATOM_ATOM = 0; 2EAPI Ecore_X_Atom ECORE_X_ATOM_ATOM = 0;
3EAPI Ecore_X_Atom ECORE_X_ATOM_CARDINAL = 0; 3EAPI Ecore_X_Atom ECORE_X_ATOM_CARDINAL = 0;
4EAPI Ecore_X_Atom ECORE_X_ATOM_INTEGER = 0;
5EAPI Ecore_X_Atom ECORE_X_ATOM_FLOAT = 0;
4EAPI Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT = 0; 6EAPI Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT = 0;
5EAPI Ecore_X_Atom ECORE_X_ATOM_FILE_NAME = 0; 7EAPI Ecore_X_Atom ECORE_X_ATOM_FILE_NAME = 0;
6EAPI Ecore_X_Atom ECORE_X_ATOM_STRING = 0; 8EAPI Ecore_X_Atom ECORE_X_ATOM_STRING = 0;
@@ -398,6 +400,8 @@ const Atom_Item atom_items[] =
398{ 400{
399 { "ATOM", &ECORE_X_ATOM_ATOM }, 401 { "ATOM", &ECORE_X_ATOM_ATOM },
400 { "CARDINAL", &ECORE_X_ATOM_CARDINAL }, 402 { "CARDINAL", &ECORE_X_ATOM_CARDINAL },
403 { "INTEGER", &ECORE_X_ATOM_INTEGER },
404 { "FLOAT", &ECORE_X_ATOM_FLOAT },
401 { "COMPOUND_TEXT", &ECORE_X_ATOM_COMPOUND_TEXT }, 405 { "COMPOUND_TEXT", &ECORE_X_ATOM_COMPOUND_TEXT },
402 { "FILE_NAME", &ECORE_X_ATOM_FILE_NAME }, 406 { "FILE_NAME", &ECORE_X_ATOM_FILE_NAME },
403 { "STRING", &ECORE_X_ATOM_STRING }, 407 { "STRING", &ECORE_X_ATOM_STRING },
diff --git a/src/lib/ecore_x/ecore_x_events.c b/src/lib/ecore_x/ecore_x_events.c
index 904e115..6431bdd 100644
--- a/src/lib/ecore_x/ecore_x_events.c
+++ b/src/lib/ecore_x/ecore_x_events.c
@@ -2466,188 +2466,6 @@ _ecore_x_event_handle_generic_event(XEvent *event)
2466 data); 2466 data);
246