EFL core migration revision 70251
authorHyoyoung Chang <hyoyoung.chang@samsung.com>
Wed, 18 Apr 2012 06:07:27 +0000 (15:07 +0900)
committerHyoyoung Chang <hyoyoung.chang@samsung.com>
Wed, 18 Apr 2012 09:02:36 +0000 (18:02 +0900)
Merge remote-tracking branch 'remotes/origin/upstream'

58 files changed:
.gitignore
ChangeLog
NEWS
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0755]
debian/copyright [new file with mode: 0644]
debian/ecore_config.1 [new file with mode: 0644]
debian/jobs [new file with mode: 0644]
debian/libecore-bin.install [new file with mode: 0644]
debian/libecore-con-svn-01.install [new file with mode: 0644]
debian/libecore-con-svn-01.shlibs [new file with mode: 0644]
debian/libecore-con.install [new file with mode: 0644]
debian/libecore-config-svn-01.install [new file with mode: 0644]
debian/libecore-config-svn-01.shlibs [new file with mode: 0644]
debian/libecore-config.install [new file with mode: 0644]
debian/libecore-dev.install [new file with mode: 0755]
debian/libecore-doc.doc-base [new file with mode: 0644]
debian/libecore-evas-svn-01.install [new file with mode: 0644]
debian/libecore-evas-svn-01.shlibs [new file with mode: 0644]
debian/libecore-evas.install [new file with mode: 0644]
debian/libecore-fb-svn-01.install [new file with mode: 0644]
debian/libecore-fb-svn-01.shlibs [new file with mode: 0644]
debian/libecore-fb.install [new file with mode: 0644]
debian/libecore-file-svn-01.install [new file with mode: 0644]
debian/libecore-file-svn-01.shlibs [new file with mode: 0644]
debian/libecore-file.install [new file with mode: 0644]
debian/libecore-imf-svn-01.install [new file with mode: 0644]
debian/libecore-imf-svn-01.shlibs [new file with mode: 0644]
debian/libecore-imf.install [new file with mode: 0644]
debian/libecore-input-svn-01.install [new file with mode: 0644]
debian/libecore-input-svn-01.shlibs [new file with mode: 0644]
debian/libecore-input.install [new file with mode: 0644]
debian/libecore-ipc-svn-01.install [new file with mode: 0644]
debian/libecore-ipc-svn-01.shlibs [new file with mode: 0644]
debian/libecore-ipc.install [new file with mode: 0644]
debian/libecore-svn-01.install [new file with mode: 0644]
debian/libecore-svn-01.shlibs [new file with mode: 0644]
debian/libecore-x-svn-01.install [new file with mode: 0644]
debian/libecore-x-svn-01.shlibs [new file with mode: 0644]
debian/libecore-x.install [new file with mode: 0644]
debian/libecore.install [new file with mode: 0644]
debian/rules [new file with mode: 0755]
ecore.spec.in
packaging/ecore.spec [new file with mode: 0644]
po/cs.po
src/lib/ecore/ecore_thread.c
src/lib/ecore_con/ecore_con_url.c
src/lib/ecore_evas/ecore_evas_buffer.c
src/lib/ecore_evas/ecore_evas_private.h
src/lib/ecore_evas/ecore_evas_x.c
src/lib/ecore_imf/Ecore_IMF.h
src/lib/ecore_imf/ecore_imf_context.c
src/lib/ecore_x/Ecore_X.h
src/lib/ecore_x/Ecore_X_Atoms.h
src/lib/ecore_x/ecore_x_atoms_decl.h
src/lib/ecore_x/xlib/ecore_x_atoms.c
src/lib/ecore_x/xlib/ecore_x_e.c

index 1454d80..05282f7 100644 (file)
@@ -89,3 +89,29 @@ Makefile.in
 /src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
 /src/util/makekeys
 INSTALL
+debian/*.debhelper.log
+debian/*.substvars
+debian/*.debhelper
+debian/libecore-bin/
+config.guess.cdbs-orig
+config.sub.cdbs-orig
+debian/files
+debian/libecore-con/
+debian/libecore-config/
+debian/libecore-data/
+debian/libecore-dbg/
+debian/libecore-dev/
+debian/libecore-doc/
+debian/libecore-evas/
+debian/libecore-fb/
+debian/libecore-file/
+debian/libecore-imf/
+debian/libecore-input/
+debian/libecore-ipc/
+debian/libecore-x/
+debian/libecore/
+debian/stamp-*
+debian/tmp/
+doc/html/
+doc/latex/
+doc/man/
index 3279eb5..5fc8206 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
         * Improve callbacks in ecore_evas to use typedefs for readability.
 
-2012-02-20  Cedric Bail
-
-       * Rewrite internal of Ecore_Thread to use Eina_Lock and ecore_main_loop_thread_safe_call_async.
-
 2012-02-23  Cedric Bail
 
        * Move to Evas buffer engine for Ecore_Evas SDL software backend.
diff --git a/NEWS b/NEWS
index e0071a8..74bd13d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -115,9 +115,6 @@ Improvements:
      - certificates can now be added for STARTTTLS
     * ecore_win32:
      - fix modifiers value on Windows XP
-    * ecore_thread:
-     - use eina_lock
-     - use Ecore thread safe async call
     * ecore_evas:
      - use Evas buffer backend for SDL software engine
      - clean up ecore-evas-buffer code somewhat
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..2e598b4
--- /dev/null
@@ -0,0 +1,1266 @@
+ecore (1.2.0+svn.70159slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.2.0+svn.70159slp2+build01
+
+ -- Jiyoun Park <jy0703.park@samsung.com>  Fri, 13 Apr 2012 18:31:50 +0900
+
+ecore (1.2.0+svn.69928slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.2.0+svn.69928slp2+build01
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Fri, 06 Apr 2012 18:14:52 +0900
+
+ecore (1.1.0+svn.69655slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69655slp2+build01
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Wed, 28 Mar 2012 14:28:49 +0900
+
+ecore (1.1.0+svn.69424slp2+build03) unstable; urgency=low
+
+  * [ECORE_X] remove feature - illume window state for app-in-app
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69424slp2+build03
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 26 Mar 2012 13:56:33 +0900
+
+ecore (1.1.0+svn.69424slp2+build02) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69424slp2+build02
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Sun, 18 Mar 2012 14:02:16 +0900
+
+ecore (1.1.0+svn.69424slp2+build01) unstable; urgency=low
+
+  * EFL migration
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69424slp2+build01
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Fri, 16 Mar 2012 21:50:01 +0900
+
+ecore (1.1.0+svn.69115slp2+build04) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69115slp2+build04
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Thu, 15 Mar 2012 21:23:10 +0900
+
+ecore (1.1.0+svn.69115slp2+build03) unstable; urgency=low
+
+  * [Ecore_X] Remove unused APIs, unused Atoms and duplicated Atoms
+    - ecore_x_e_comp_dri_buff_flip_supported_set
+    - ecore_x_e_comp_dri_buff_flip_supported_get
+    - ECORE_X_ATOM_E_USER_CREATED_WINDOW
+    - ECORE_X_ATOM_E_PARENT_BORDER_WINDOW
+    - ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED
+    - ECORE_X_ATOM_E_ILLUME_ROTATE_OPERATOR
+    - ECORE_X_ATOM_USER_CREATED_WINDOW
+    - ECORE_X_ATOM_PARENT_BORDER_WINDOW
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69115slp2+build03
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 14 Mar 2012 09:01:03 +0900
+
+ecore (1.1.0+svn.69115slp2+build02) unstable; urgency=low
+
+  * Change parameter of ecore_imf_context_input_panel_language_locale_get
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69115slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Mon, 12 Mar 2012 14:43:53 +0900
+
+ecore (1.1.0+svn.69115slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.69115slp2+build01
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Sat, 10 Mar 2012 13:51:23 +0900
+
+ecore (1.1.0+svn.68762slp2+build02) unstable; urgency=low
+
+  * 69115
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.68762slp2+build02
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Sat, 10 Mar 2012 13:20:45 +0900
+
+ecore (1.1.0+svn.68762slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.68762slp2+build01
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Wed, 07 Mar 2012 16:44:23 +0900
+
+ecore (1.1.0+svn.68529slp2+build01) unstable; urgency=low
+
+  * Package upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.68529slp2+build01
+
+ -- Jeonghyun Yun <jh0506.yun@samsung.com>  Fri, 02 Mar 2012 06:32:15 -0500
+
+ecore (1.1.0+svn.67695slp2+build06) unstable; urgency=low
+
+  * [ecore_imf] add language_locale_get, candidate_panel_geometry_get API
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.67695slp2+build06
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Fri, 02 Mar 2012 11:44:15 +0900
+
+ecore (1.1.0+svn.67695slp2+build05) unstable; urgency=low
+
+  * [ecore_imf] add ecore_imf_context_input_panel_caps_lock_mode_set/get
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.67695slp2+build05
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Wed, 29 Feb 2012 14:21:16 +0900
+
+ecore (1.1.0+svn.67695slp2+build04) unstable; urgency=low
+
+  * [ecore_imf] cleanup code
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.67695slp2+build04
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Thu, 23 Feb 2012 17:36:50 +0900
+
+ecore (1.1.0+svn.67695slp2+build03) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.67695slp2+build03
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Mon, 20 Feb 2012 20:15:54 +0900
+
+ecore (1.1.0+svn.67695slp2+build02) unstable; urgency=low
+
+  * Add APIs related to input panel control
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.67695slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Mon, 20 Feb 2012 09:23:47 +0900
+
+ecore (1.1.0+svn.67695slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.67695slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Wed, 15 Feb 2012 19:01:02 +0900
+
+ecore (1.1.0+svn.66972slp2+build03) unstable; urgency=low
+
+  * [ECORE_X] Add feature - illume window state for app-in-app
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.66972slp2+build03
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 02 Feb 2012 15:04:12 +0900
+
+ecore (1.1.0+svn.66972slp2+build02) unstable; urgency=low
+
+  * Use synchronous ecore_imf callback API
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.66972slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 31 Jan 2012 13:21:06 +0900
+
+ecore (1.1.0+svn.66972slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.66972slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Mon, 16 Jan 2012 18:29:42 +0900
+
+ecore (1.1.0+svn.65878slp2+build05) unstable; urgency=low
+
+  * jpeg7 -> jpeg8
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65878slp2+build05
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Mon, 16 Jan 2012 11:14:18 +0900
+
+ecore (1.1.0+svn.65878slp2+build04) unstable; urgency=low
+
+  * Repackaging
+  * Git: slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65878slp2+build04
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Fri, 30 Dec 2011 15:07:27 +0900
+
+ecore (1.1.0+svn.65878slp2+build03) unstable; urgency=low
+
+  * Just Bumped up version
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65878slp2+build03
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com>  Mon, 26 Dec 2011 15:20:31 +0900
+
+ecore (1.1.0+svn.65878slp2+build02) unstable; urgency=low
+
+  * Upstream sync related ecore_con  (r66414, 66462, sync after r65934)
+  * ecore_timer_dump is disabled as default
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65878slp2+build02
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com>  Fri, 23 Dec 2011 18:07:06 +0900
+
+ecore (1.1.0+svn.65878slp2+build01) unstable; urgency=low
+
+  * Package Upload for migration
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65878slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 08 Dec 2011 13:51:03 +0900
+
+ecore (1.1.0+svn.65618slp2+build02) unstable; urgency=low
+
+  * [Bug Fix] CQ H0100136744 - curl fd handler refactoring
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65618slp2+build02
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com>  Tue, 29 Nov 2011 17:43:36 +0900
+
+ecore (1.1.0+svn.65618slp2+build01) unstable; urgency=low
+
+  * Package Upload
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65618slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Tue, 29 Nov 2011 14:11:22 +0900
+
+ecore (1.1.0+svn.65303slp2+build04) unstable; urgency=low
+
+  * Add a configure option to enable ecore x gesture extension support 
+  * Add libxgesture-dev on Build-Depends section in debian/control 
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore 
+  * Tag: ecore_1.1.0+svn.65303slp2+build04
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Fri, 18 Nov 2011 11:11:27 +0900
+
+ecore (1.1.0+svn.65303slp2+build03) unstable; urgency=low
+
+  * Package Upload : because of build error
+  * Important Changes
+        Rollback about dependency with cares - Caused some app's build error about no Elementary.h
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.1.0+svn.65303slp2+build03
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Thu, 17 Nov 2011 19:10:33 +0900
+
+ecore (1.1.0+svn.65303slp2+build02) unstable; urgency=low
+
+  * Enable c-ARES based aync DNS resolution
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Thu, 17 Nov 2011 17:46:57 +0900
+
+ecore (1.1.0+svn.65303slp2+build01) unstable; urgency=low
+
+  * Merge with upstream @65303
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Thu, 17 Nov 2011 09:05:24 +0900
+
+ecore (1.0.0.001+svn.64964slp2+build02) unstable; urgency=low
+
+  * [ecore_imf] remove unused interfaces
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.64964slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Mon, 14 Nov 2011 15:19:52 +0900
+
+ecore (1.0.0.001+svn.64964slp2+build01) unstable; urgency=low
+
+  * Merge with upstream @64964
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Thu, 10 Nov 2011 12:12:11 +0900
+
+ecore (1.0.0.001+svn.64661slp2+build04) unstable; urgency=low
+
+  * [ecore_imf] remove depecated APIs
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.64661slp2+build04
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Thu, 10 Nov 2011 09:28:41 +0900
+
+ecore (1.0.0.001+svn.64661slp2+build03) unstable; urgency=low
+
+  * Ecore, Ecore_con, Ecore_file: merge upstream r64851 
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.64661slp2+build03
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com>  Tue, 08 Nov 2011 14:17:28 +0900
+
+ecore (1.0.0.001+svn.64661slp2+build02) unstable; urgency=low
+
+  * [ecore evas] fix rotation lockup problem
+                 when application's window is unmapped
+  * [ecore evas] fix sync counter lockup problem with application
+                 which rapidly maps and unmaps a window
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.64661slp2+build02
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Fri, 04 Nov 2011 13:45:05 +0900
+
+ecore (1.0.0.001+svn.64661slp2+build01) unstable; urgency=low
+
+  * Merge with upstream @64661
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Thu, 03 Nov 2011 11:19:25 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build07) unstable; urgency=low
+
+  * [ecore con url] Change HTTP persistent --> normal 
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build07
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com>  Wed, 02 Nov 2011 17:56:11 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build06) unstable; urgency=low
+
+  * Deprecated some Ecore_IMF APIs
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build06
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Wed, 02 Nov 2011 12:41:49 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build05) unstable; urgency=low
+
+  * Upload package
+  * Important Changes
+        Add new api related with get last recently requested geometry value
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build05
+
+ -- Jiyoun Park <jy0703.park@samsung.com>  Mon, 31 Oct 2011 15:23:33 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build04) unstable; urgency=low
+
+  * Package Upload
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build04
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com>  Mon, 31 Oct 2011 10:25:07 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build03) unstable; urgency=low
+
+  * Upload package
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build03
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 25 Oct 2011 20:51:15 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build02) unstable; urgency=low
+
+  * Upload Package
+  * Important Changes
+        ecore evas util can send resize request even though X relpy
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build02
+
+ -- Jiyoun Park <jy0703.park@samsung.com>  Tue, 25 Oct 2011 18:08:02 +0900
+
+ecore (1.0.0.001+svn.63888slp2+build01) unstable; urgency=low
+
+  * Merge with upstream
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63888slp2+build01
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Fri, 07 Oct 2011 11:41:21 +0900
+
+ecore (1.0.0.001+svn.63811slp2+build01) unstable; urgency=low
+
+  * merge with upstream
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.63811slp2+build01
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Wed, 05 Oct 2011 15:34:39 +0900
+
+ecore (1.0.0.001+svn.62653slp2+build02) unstable; urgency=low
+
+  * [SVN patch] ecore in SLP is merged with SVN r63475 patch only.
+    - fix bug in generic event handling on xlib side of ecore_x
+  * Ecore_IMF: remove unused enum ECORE_IMF_Autocorrection
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.62653slp2+build02
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 26 Sep 2011 20:01:42 +0900
+
+ecore (1.0.0.001+svn.62653slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r62653
+  * Important Changes
+       [Migration upstream r62653] Merge branch 'svn_merge'
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.62653slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Fri, 02 Sep 2011 18:43:09 +0900
+
+ecore (1.0.0.001+svn.61784slp2+build02) unstable; urgency=low
+
+  * [ecore_x] fixed multi-touch double clicked
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.61784slp2+build02
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Wed, 31 Aug 2011 19:42:43 +0900
+
+ecore (1.0.0.001+svn.61784slp2+build01) unstable; urgency=low
+
+  * Merge with upstream ecore svn @61784
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Wed, 27 Jul 2011 14:43:58 +0900
+
+ecore (1.0.0.001+svn.61150slp2+build03) unstable; urgency=low
+
+  * [ecore_imf] set autocapital type
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.61150slp2+build03
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Mon, 25 Jul 2011 14:30:29 +0900
+
+ecore (1.0.0.001+svn.61150slp2+build02) unstable; urgency=low
+
+  * [ecore_imf] add ecore_imf_context_cursor_location_set API
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.61150slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Mon, 11 Jul 2011 16:13:56 +0900
+
+ecore (1.0.0.001+svn.61150slp2+build01) unstable; urgency=low
+
+  * Merge with SVN revision 61150
+
+ -- Mike McCormack <mj.mccormack@samsung.com>  Thu, 07 Jul 2011 15:10:51 +0900
+
+ecore (1.0.0.001+svn.60286slp2+build02) unstable; urgency=low
+
+  * [ecore_imf] add ecore_imf_context_input_panel_enalbed_set, get API
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.60286slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Sat, 25 Jun 2011 15:11:35 +0900
+
+ecore (1.0.0.001+svn.60286slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r60286
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.60286slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Fri, 24 Jun 2011 18:10:02 +0900
+
+ecore (1.0.0.001+svn.58224slp2+build04) unstable; urgency=low
+
+  * Fixed _ecore_main_loop_iterate_internal. Upstream merge.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.58224slp2+build04
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.com>  Mon, 23 May 2011 14:20:58 +0900
+
+ecore (1.0.0.001+svn.58224slp2+build03) unstable; urgency=low
+
+  * Package upload
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.58224slp2+build03
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Tue, 03 May 2011 20:48:31 +0900
+
+ecore (1.0.0.001+svn.58224slp2+build02) unstable; urgency=low
+
+  * Add shape input mask feature (upstream svn rev.58621)
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.58224slp2+build02
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 11 Apr 2011 12:52:50 +0900
+
+ecore (1.0.0.001+svn.58224slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r58224
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.58224slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Tue, 05 Apr 2011 15:55:04 +0900
+
+ecore (1.0.0.001+svn.58047slp2+build02) unstable; urgency=low
+
+  * Rollback
+  * Git: slp-scm.sec.samsung.net:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.58047slp2+build02
+
+ -- Shinwoo Kim <cinoo.kim@samsung.com>  Tue, 29 Mar 2011 23:52:57 +0900
+
+ecore (1.0.0.001+svn.58047slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r58047
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.58047slp2+build01
+
+ -- Shinwoo Kim <cinoo.kim@samsung.com>  Tue, 29 Mar 2011 18:55:29 +0900
+
+ecore (1.0.0.001+svn.57453slp2+build05) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r57453
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.57453slp2+build05
+
+ -- Myungjae Lee <mjae.lee@samsung.com>  Wed, 09 Mar 2011 11:29:41 +0900
+
+ecore (1.0.0.001+svn.57453slp2+build04) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r57453
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.57453slp2+build04
+
+ -- Myungjae Lee <mjae.lee@samsung.com>  Wed, 09 Mar 2011 11:14:55 +0900
+
+ecore (1.0.0.001+svn.57453slp2+build03) unstable; urgency=low
+
+  * Package Uplaod : Rollback
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.57453slp2+build03
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Tue, 08 Mar 2011 12:38:42 +0900
+
+ecore (1.0.0.001+svn.57453slp2+build02) unstable; urgency=low
+
+  * Package Upload : rollback
+  * Git: 165.213.180.234:/slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.57453slp2+build02
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Tue, 08 Mar 2011 11:10:05 +0900
+
+ecore (1.0.0.001+svn.57453slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r57453
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.57453slp2+build01
+
+ -- Myungjae Lee <mjae.lee@samsung.com>  Mon, 07 Mar 2011 17:28:10 +0900
+
+ecore (1.0.0.001+svn.56239slp2+build06) unstable; urgency=low
+
+  * [SVN r56251] Bug fix - dont call pipe handler if its deleted.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build06  
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Fri, 11 Feb 2011 17:52:58 +0900
+
+ecore (1.0.0.001+svn.56239slp2+build05) unstable; urgency=low
+
+  * [SVN r56251] Bug fix - dont call pipe handler if its deleted.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build05 
+
+ -- Myoungwoon Kim <myoungwoon.kim@samsung.com>  Tue, 08 Feb 2011 15:21:18 +0900
+
+ecore (1.0.0.001+svn.56239slp2+build04) unstable; urgency=low
+
+  * [ecore_evas_x.c] apply ECORE_EVAS_GL_SYNC_DRAW_DONE env.
+     + check whether GL driver sends SYNC_DRAW_DONE msg after buffer copy.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build04
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Sat, 05 Feb 2011 17:29:55 +0900
+
+ecore (1.0.0.001+svn.56239slp2+build03) unstable; urgency=low
+
+  * ee->no_comp_sync = 0 
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build03  
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Mon, 31 Jan 2011 18:26:53 +0900
+
+ecore (1.0.0.001+svn.56239slp2+build02) unstable; urgency=low
+
+  * ee->no_comp_sync = 0 
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build02 
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Mon, 31 Jan 2011 17:12:38 +0900
+
+ecore (1.0.0.001+svn.56239slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r56239
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build01
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Thu, 27 Jan 2011 12:21:58 +0900
+
+ecore (1.0.0.001+svn.56091slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r56091
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56091slp2+build01
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56091slp2+build01
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Wed, 19 Jan 2011 16:16:45 +0900
+
+ecore (1.0.0.001+svn.55755slp2+build02) unstable; urgency=low
+
+  * [ecore_imf] bug fix : hide keyboard in ecore_imf_context_del
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55755slp2+build02
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Wed, 05 Jan 2011 08:44:58 +0900
+
+ecore (1.0.0.001+svn.55755slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r55755
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55755slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Mon, 03 Jan 2011 21:19:00 +0900
+
+ecore (1.0.0.001+svn.55594slp2+build02) unstable; urgency=low
+
+  * Bug patch - ecore_x_xregion_is_empty()
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55594slp2+build02
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 03 Jan 2011 12:56:39 +0900
+
+ecore (1.0.0.001+svn.55594slp2+build01) unstable; urgency=low
+
+  * [SVN EFL Migration] ecore in SLP is merged with SVN r55594
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55594slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Wed, 22 Dec 2010 20:01:47 +0900
+
+ecore (1.0.0.001+svn.55371slp2+build02) unstable; urgency=low
+
+  * epoll disabled.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55371slp2+build02
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Wed, 15 Dec 2010 16:37:29 +0900
+
+ecore (1.0.0.001+svn.55371slp2+build01) unstable; urgency=low
+
+  * [SVN's EFL Migration] ecore in SLP is merged with SVN r55371.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55371slp2+build01
+
+ -- Juyung Seo <juyung.seo@samsung.com>  Tue, 14 Dec 2010 17:50:20 +0900
+
+ecore (1.0.0.001+svn.55079slp2+build03) unstable; urgency=low
+
+  * [SVN's EFL Migration] ecore in SLP is merged with SVN r55371.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.55079slp2+build03
+
+ -- Juyung Seo <juyung.seo@samsung.com>  Tue, 14 Dec 2010 14:54:04 +0900
+
+ecore (1.0.0.001+svn.55079slp2+build02) unstable; urgency=low
+
+  * remove epoll
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.55079slp2+build02
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 02 Dec 2010 17:28:23 +0900
+
+ecore (1.0.0.001+svn.55079slp2+build01) unstable; urgency=low
+
+  * [SVN 55079 Merge]
+  * Update to SVN Revision 55079.
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.55079slp2+build01
+
+ -- Myoungwoon Kim <myoungwoon.kim@samsung.com>  Thu, 02 Dec 2010 09:18:09 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build28) unstable; urgency=low
+
+  * [ecore_evas] Patch code for rotation.
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build28
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 29 Nov 2010 10:14:56 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build27) unstable; urgency=low
+
+  * [ecore_evas.c] change FPS rate print it every 0.1 sec
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build27
+
+ -- Seokjae Jeong <seok.j.jeong@samsung.com>  Sat, 27 Nov 2010 15:06:21 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build26) unstable; urgency=low
+
+  * [ecore_imf] remove unused typedefs
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build26
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Fri, 26 Nov 2010 17:56:05 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build25) unstable; urgency=low
+
+  * [SVN 54830 Merge]
+  * Update to SVN Revision 54830.
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build25
+
+ -- Juyung Seo <juyung.seo@samsung.com>  Fri, 26 Nov 2010 15:31:53 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build19) unstable; urgency=low
+
+  * libcurl-dev -> libcurl4-openssl-dev
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build19
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Thu, 18 Nov 2010 21:26:21 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build18) unstable; urgency=low
+
+  * [ecore_x] Add feature for sliding window
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build18
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 11 Nov 2010 10:53:35 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build17) unstable; urgency=low
+
+  * [ecore_imf] ecore_imf_context_input_panel_language_set
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build17
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 09 Nov 2010 15:08:12 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build16) unstable; urgency=low
+
+  * fix documentation of ecore_imf 
+  * [src/lib/ecore_evas/Ecore_Evas.h] svn merge v51740.
+  * [svn merge] r51678~r51707
+  * [svn merge] Changeset 51650 - Revert and reapply badnull patch
+  * [ecore_evas] svn 51618 : Add UNUSED where missing.
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build16
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Wed, 13 Oct 2010 16:54:37 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build15) unstable; urgency=low
+
+  * fixed epoll 
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build15
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Tue, 05 Oct 2010 10:39:49 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build14) unstable; urgency=low
+
+  * [ecore_x_events.c] fixed double / triple click
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build14
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Mon, 04 Oct 2010 21:38:13 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build13) unstable; urgency=low
+
+  * [ecore_evas] add EFL window rotation effect
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build13
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Sat, 02 Oct 2010 03:37:56 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build12) unstable; urgency=low
+
+  * [ecore_imf] svn merge 52773
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build12 
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Wed, 30 Sep 2010 09:56:30 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build10) unstable; urgency=low
+
+  * update x_selection from upstream
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build10
+
+ -- Hyoyoung Chang <hyoyoung.chang@samsung.com>  Mon, 27 Sep 2010 17:27:38 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build09) unstable; urgency=low
+
+  * repackaging
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build09
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Mon, 20 Sep 2010 21:42:20 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build08) unstable; urgency=low
+
+  * Add ecore_imf_context_input_panel_caps_mode_set
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build08
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Fri, 17 Sep 2010 15:48:17 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build07) unstable; urgency=low
+
+  * Repackage for epoll disable
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build07
+
+ -- Hyoyoung Chang <hyoyoung.chang@samsung.com>  Fri, 17 Sep 2010 12:03:07 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build06) unstable; urgency=low
+
+  * Repackage for epoll disable
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build06
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Wed, 15 Sep 2010 18:15:43 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build05) unstable; urgency=low
+
+  * Repackage for epoll disable
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build05
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Wed, 15 Sep 2010 11:39:28 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build04) unstable; urgency=low
+
+  * add as-needed
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build04
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Wed, 15 Sep 2010 10:00:16 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build03) unstable; urgency=low
+
+  * repackage for stopping EPOLL fucntionality
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build03
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Tue, 14 Sep 2010 16:05:25 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build02) unstable; urgency=low
+
+  * repackage
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build02
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Fri, 10 Sep 2010 22:38:46 +0900
+
+ecore (1.0.0.001+svn.51480slp2+build01) unstable; urgency=low
+
+  * [ecore] Merge slp with SVN
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_1.0.0.001+svn.51480slp2+build01
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Wed, 01 Sep 2010 10:31:12 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build15) unstable; urgency=low
+
+  * [rules] add disable-xim (from Wonkuk Jung)
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build15
+
+ -- Juyung Seo  <juyung.seo@samsung.com>  Wed, 01 Sep 2010 21:52:08 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build14) unstable; urgency=low
+
+  * [ecore_x] fix sync issue in 1 special event re-order case. ( Changeset r51609 ) 
+  * Reference : http://trac.enlightenment.org/e/changeset/51609
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build14
+
+ -- Gwan-gyeong Mun <kk.moon@samsung.com>  Mon, 30 Aug 2010 08:46:33 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build13) unstable; urgency=low
+
+  * [ecore_imf] add MONTH, NUMBERONLY Layout
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build13
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Fri, 20 Aug 2010 11:23:12 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build12) unstable; urgency=low
+
+  * [ecore_imf] change parameter type of event_callback_add
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build12
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Fri, 30 Jul 2010 14:57:28 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build11) unstable; urgency=low
+
+  * [ecore_imf] fix memory leak when private key or disable key func is used
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build11
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Fri, 30 Jul 2010 14:32:07 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build10) unstable; urgency=low
+
+  * Remove deprecated Ecore_IMF APIs.
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build10
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 20 Jul 2010 18:17:00 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build09) unstable; urgency=low
+
+  * Repackage for beat release.
+  * Git: 165.213.180.234:/git/slp/pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build09
+
+ -- WooHyun Jung <wh0705.jung@samsung.com>  Mon, 19 Jul 2010 10:47:44 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build08) unstable; urgency=low
+
+  * add the ECORE_X_ATOM_PARENT_BORDER_WINDOW atom.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build08
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Wed, 14 Jul 2010 15:41:35 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build07) unstable; urgency=low
+
+  * Ecore_IMF API is revised.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build07
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Thu, 08 Jul 2010 17:14:29 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build06) unstable; urgency=low
+
+  * add ecore_evas_gl_x11_no_swap_set for supporting lock/unlock feature.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build06
+
+ -- ChunEon Park <chuneon.park@samsung.com>  Wed, 07 Jul 2010 20:03:15 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build05) unstable; urgency=low
+
+  * add ecore_evas_gl_x11_no_swap_set for supporting lock/unlock feature.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build05
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Tue, 29 Jun 2010 18:58:38 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build04) unstable; urgency=low
+
+  * Packaging.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build04
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.com>  Thu, 10 Jun 2010 21:09:25 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build03) unstable; urgency=low
+
+  * Packaging.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build03
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.com>  Thu, 10 Jun 2010 21:04:09 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3build02) unstable; urgency=low
+
+  * Packaging.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3build02
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.com>  목, 10  6월 2010 21:00:51 +0900
+
+ecore (0.9.9.060+svn.49540slp2+3) unstable; urgency=low
+
+  * Packaging.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+3
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.com>  Thu, 10 Jun 2010 20:46:54 +0900
+
+ecore (0.9.9.060+svn.49540slp2+2) unstable; urgency=low
+
+  * Packaging.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+2
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.net>  Thu, 10 Jun 2010 20:46:08 +0900
+
+ecore (0.9.9.060+svn.49540slp2+1) unstable; urgency=low
+
+  * Packaging.
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL-pkgs/ecore
+  * Tag: ecore_0.9.9.060+svn.49540slp2+1
+
+ -- Daniel Juyung Seo <juyung.seo@smasung.net>  Thu, 10 Jun 2010 20:45:22 +0900
+
+ecore (0.9.9.060+svn.49540slp2+0) unstable; urgency=low
+
+  * Update opensource EFL from SVN
+  * SVN revision: 49540 (Total EFL revision: 49550)
+  * Tag: 0.9.9.060+svn.49540slp2+0
+
+ -- Daniel Juyung Seo <juyung.seo@smasung.net>  Thu, 10 Jun 2010 15:50:38 +0900
+
+ecore (0.9.9.060+svn20100304slp2+4) unstable; urgency=low
+
+  * Enable curl
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL
+  * Tag: ecore_0.9.9.060+svn20100304slp2+4
+
+ -- Sangjin Lee <lsj119@samsung.com>  Wed, 14 Apr 2010 17:54:37 +0900
+
+ecore (0.9.9.060+svn20100304slp2+3) unstable; urgency=low
+
+  * change control - add libeina-svn-04 dependency to libecore-svn-01
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/EFL
+  * Tag: 9.9.060+svn20100304slp2+3
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 01 Apr 2010 16:50:07 +0900
+
+ecore (0.9.9.060+svn20100304slp2+2) unstable; urgency=low
+
+  * add document in ecore_imf and cleanup
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 30 Mar 2010 16:55:51 +0900
+
+ecore (0.9.9.060+svn20100304slp2+1) unstable; urgency=low
+
+  * change package version
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 25 Mar 2010 15:05:10 +0900
+
+ecore (0.9.9.060+svn20100304-5) unstable; urgency=low
+
+  * Upgrade ecore to 47360 
+
+ -- Sangjin Lee <lsj119@samsung.com>  Mon, 22 Mar 2010 20:52:51 +0900
+
+ecore (0.9.9.060+svn20100304-4) unstable; urgency=low
+
+  * Modifed keydefs.h for resolving macro name conflicts
+
+ -- Ji-hoon Lee <dalton.lee@samsung.com>  Mon, 22 Mar 2010 16:03:48 +0900
+
+ecore (0.9.9.060+svn20100304-3) unstable; urgency=low
+
+    * Added keydefs.h for identifying key index
+
+ -- Ji-hoon Lee <dalton.lee@samsung.com>  Fri, 19 Mar 2010 20:20:43 +0900
+
+ecore (0.9.9.060+svn20100304-2) unstable; urgency=low
+
+  * Fix debian/libecore-dev.install not to omit symbolic links for shared objects
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Tue, 16 Mar 2010 21:26:16 +0900
+
+ecore (0.9.9.060+svn20100304-1) unstable; urgency=low
+
+  * EFL_update_revision_46864
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 11 Mar 2010 10:50:35 +0900
+
+ecore (0.9.9.060+svn20100203-16) unstable; urgency=low
+
+  * Modify shape input mask
+
+ -- Sangjin Lee <lsj119@samsung.com>  Thu, 11 Mar 2010 10:42:52 +0900
+
+ecore (0.9.9.060+svn20100203-15) unstable; urgency=low
+
+  * Modify ecore_x_window_hide().
+   + In order to avoid ISE lockup problem, we ensure that root window
+     receives UnmapNotify event.
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Wed, 10 Mar 2010 17:07:18 +0900
+
+ecore (0.9.9.060+svn20100203-14) unstable; urgency=low
+
+  * Merge source (based on SVN rev.46421).
+  * Add ecore_data library.
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 04 Mar 2010 20:17:30 +0900
+
+ecore (0.9.9.060+svn20100203-13) unstable; urgency=low
+
+  * Rollback to source (0.9.9.060+svn20100203-10)
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 04 Mar 2010 14:26:58 +0900
+
+ecore (0.9.9.060+svn20100203-12) unstable; urgency=low
+
+  * Merge the latest ecore_imf
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Thu, 04 Mar 2010 13:21:57 +0900
+
+ecore (0.9.9.060+svn20100203-11) unstable; urgency=low
+
+  * Merge source (based on SVN rev.46421)
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 04 Mar 2010 12:17:19 +0900
+
+ecore (0.9.9.060+svn20100203-10) unstable; urgency=low
+
+  * Add ecore_imf_context_ise_event_callback_set API. ise_state_add_listener, remove_listener, change_listener will be deprecated.
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 02 Mar 2010 17:52:58 +0900
+
+ecore (0.9.9.060+svn20100203-9) unstable; urgency=low
+
+  * Patch for ecore_evas_x_alpha_set
+
+ -- Sangjin Lee <lsj119@samsung.com>  Sat, 27 Feb 2010 20:44:34 +0900
+
+ecore (0.9.9.060+svn20100203-8) unstable; urgency=low
+
+  * add more ISE_EVENT types
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Thu, 25 Feb 2010 17:09:28 +0900
+
+ecore (0.9.9.060+svn20100203-7) unstable; urgency=low
+
+  * add ecore_imf_context_ise_get_window_rect API
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 23 Feb 2010 20:42:39 +0900
+
+ecore (0.9.9.060+svn20100203-6) unstable; urgency=low
+
+  * revision update to 46263. (partial merge)
+  * add atoms for rotation.
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 18 Feb 2010 19:37:45 +0900
+
+ecore (0.9.9.060+svn20100203-5) unstable; urgency=low
+
+  * elm_win_transparent apply
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 11 Feb 2010 15:12:01 +0900
+
+ecore (0.9.9.060+svn20100203-4) unstable; urgency=low
+
+  * Add rotate with resize.
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 08 Feb 2010 14:14:00 +0900
+
+ecore (0.9.9.060+svn20100203-3) unstable; urgency=low
+
+  * repack
+
+ -- sangho park <sangho.g.park@samsung.com>  Thu, 04 Feb 2010 22:04:12 +0900
+
+ecore (0.9.9.060+svn20100203-2) unstable; urgency=low
+
+  * repack
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 04 Feb 2010 20:27:43 +0900
+
+ecore (0.9.9.060+svn20100203-1) unstable; urgency=low
+
+  * EFL_update_revision_45828
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Wed, 03 Feb 2010 16:39:21 +0900
+
+ecore (0.9.9.060+svn20100119-2) unstable; urgency=low
+
+  * updated ISF files
+
+ -- sehwan <sehwan@samsung.com>  Thu, 21 Jan 2010 23:23:29 +0900
+
+ecore (0.9.9.060+svn20100119-1) unstable; urgency=low
+
+  * EFL_update_revision_45322
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 19 Jan 2010 20:44:48 +0900
+
+ecore (0.9.9.060+svn20100111-4) unstable; urgency=low
+
+  * changed ecore-imf for isf
+
+ -- sehwan <sehwan@samsung.com>  Fri, 15 Jan 2010 15:06:31 +0900
+
+ecore (0.9.9.060+svn20100111-3) unstable; urgency=low
+
+  * reupload EFL i686
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Tue, 12 Jan 2010 17:35:33 +0900
+
+ecore (0.9.9.060+svn20100111-2) unstable; urgency=low
+
+  * reupload EFL
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Mon, 11 Jan 2010 22:16:49 +0900
+
+ecore (0.9.9.060+svn20100111-1) unstable; urgency=low
+
+  * update EFL revision 45026
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Mon, 11 Jan 2010 13:28:04 +0900
+
+ecore (0.9.9.060+svn20091229-3) unstable; urgency=low
+
+  * To solve version mismatch between i386 and armel.
+  * No source code changed.
+
+ -- Jongwoo Chae <jongwoo.chae@samsung.com>  Thu, 07 Jan 2010 21:47:34 +0900
+
+ecore (0.9.9.060+svn20091229-2) unstable; urgency=low
+
+  * Changed ecore_imf for isf package
+
+ -- Ji-hoon Lee <dalton.lee@samsung.com>  Wed, 06 Jan 2010 13:55:00 +0900
+
+ecore (0.9.9.060+svn20091229-1) unstable; urgency=low
+
+  * update EFL
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Tue, 29 Dec 2009 14:27:03 +0900
+
+ecore (0.9.9.060+svn20091112-6) unstable; urgency=low
+
+  * modified debian/control to link libcurl
+
+ -- Jihoon Kim <jihoon48.kim@samsung.com>  Tue, 29 Dec 2009 19:31:19 +0900
+
+
+ecore (0.9.9.060+svn20091112-5) unstable; urgency=low
+
+  * modified debian/control : changed Architecture all to any (by Juyung Seo)
+
+ -- Sangho Park <sangho.g.park@samsung.com>  Fri, 27 Nov 2009 15:59:07 +0900
+
+ecore (0.9.9.060+svn20091112-4) unstable; urgency=low
+
+  * svn stable version
+
+ -- Sangho Park <sangho.g.park@samsung.com>  Thu, 19 Nov 2009 18:50:08 +0900
+
+ecore (0.9.9.060+svn20091112-3) unstable; urgency=low
+
+  * add build dependency glib
+
+ -- Sangho Park <sangho.g.park@samsung.com>  Tue, 17 Nov 2009 21:37:23 +0900
+
+ecore (0.9.9.060+svn20091112-2) unstable; urgency=low
+
+  * add glib dependency
+
+ -- Sangho Park <sangho.g.park@samsung.com>  Tue, 17 Nov 2009 16:27:18 +0900
+
+ecore (0.9.9.060+svn20091112-1) unstable; urgency=low
+
+  * New version
+
+ -- Sangho Park <sangho.g.park@samsung.com>  Thu, 12 Nov 2009 23:44:06 +0900
+
+ecore (0.9.9.060+svnYYYYMMDD-1) unstable; urgency=low
+
+  * New version
+
+ -- quaker <quaker66@gmail.com>  Thu, 22 Apr 2009 18:12:06 +0100
+
+ecore (0.9.9.050+svnYYYYMMDD-1) unstable; urgency=low
+
+  * Clean up changelog
+
+ -- quaker <quaker66@gmail.com>  Tue, 21 Apr 2009 19:14:37 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..7e8abae
--- /dev/null
@@ -0,0 +1,244 @@
+Source: ecore
+Section: libs
+Priority: optional
+Maintainer: Jaehwan Kim <jae.hwan.kim@samsung.com>,
+ Jihoon Kim <jihoon48.kim@samsung.com>,
+ Sangjin Lee <lsj119@samsung.com>,
+ Doyoun Kang <doyoun.kang@samsung.com>,
+ Sung-Jin Park <sj76.park@samsung.com>,
+ Juyung Seo <juyung.seo@samsung.com>,
+ Seokjae Jeong <seok.j.jeong@samsung.com>,
+ ChunEon Park <chuneon.park@samsung.com>,
+ WooHyun Jung <wh0705.jung@samsung.com>,
+ Gwanglim Lee <gl77.lee@samsung.com>,
+ Ji-hoon Lee <dalton.lee@samsung.com>,
+ Gwan-gyeong Mun <kk.moon@samsung.com>,
+ Hyoyoung Chang <hyoyoung.chang@samsung.com>,
+ Myoungwoon Kim <myoungwoon.kim@samsung.com>,
+ Seokjae Jeong <seok.j.jeong@samsung.com>,
+ Mike McCormack <mj.mccormack@samsung.com>,
+ Jeonghyun Yun <jh0506.yun@samsung.com>
+Uploaders: Tae-Hwan Kim <the81.kim@samsung.com>
+Build-Depends: dpkg-dev,
+ debhelper (>= 6),
+ cdbs,
+ libeina-dev (>= 0.0.2.060+svn20100304),
+ libeet-dev (>= 1.0.0),
+ libxgesture-dev,
+ libevas-dev ,
+ libglib2.0-dev,
+ libxcursor-dev,
+ libxrender-dev,
+ libxinerama-dev,
+ libxrandr-dev,
+ libxext-dev,
+ libxcomposite-dev,
+ libjpeg8-dev,
+ libxdamage-dev,
+ x11proto-xext-dev,
+ libxtst-dev,
+ doxygen,
+ pkg-config,
+ libtool,
+ libcurl-dev,
+Standards-Version: 3.8.1
+Homepage: http://enlightenment.org
+
+Package: libecore
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}, libeina
+Description: Core abstraction layer for enlightenment DR 0.17
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+
+Package: libecore-con
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore Connection Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Connection Library.
+
+Package: libecore-config
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore Enlightened Property Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Enlightened Property Library.
+
+Package: libecore-evas
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore Evas Wrapper Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Evas wrapper functions.
+
+Package: libecore-fb
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore frame buffer system functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore frame buffer system functions.
+
+Package: libecore-file
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore File Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore File Library.
+
+Package: libecore-imf
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore Input Method Framework module
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Input Method Framework module, and the Evas
+ helper functions for it.
+
+Package: libecore-input
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore input functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Input Library.
+
+Package: libecore-ipc
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore inter-process communication functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore inter-process communication functions.
+
+Package: libecore-data
+Architecture: any
+Depends: ${misc:Depends}
+Description: Ecore data functions
+
+Package: libecore-x
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Ecore functions for dealing with the X Windows System
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore wrapper and convenience functions for using
+ the X Windows System.
+
+Package: libecore-dev
+Architecture: any
+Section: libdevel
+Suggests: libecore-doc
+Depends: ${misc:Depends}, libecore (= ${binary:Version}),
+         libecore-con (= ${binary:Version}),
+         libecore-config (= ${binary:Version}),
+         libecore-evas (= ${binary:Version}),
+         libecore-fb (= ${binary:Version}),
+         libecore-file (= ${binary:Version}),
+         libecore-imf (= ${binary:Version}),
+         libecore-input (= ${binary:Version}),
+         libecore-ipc (= ${binary:Version}),
+         libecore-x (= ${binary:Version}),
+         libecore-data (= ${binary:Version}),
+         libxgesture-dev,
+         libeet-dev, libevas-dev (>= 0.9.9.060), libeina-dev, pkg-config, libcurl-dev,
+         libxcursor-dev, libxrender-dev, libxinerama-dev, libxrandr-dev, libxext-dev,
+         libxcomposite-dev, libxdamage-dev, x11proto-xext-dev, libxtst-dev, libglib2.0-dev
+Description: Ecore headers and static libraries
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains headers and static libraries for the Ecore library.
+
+Package: libecore-doc
+Architecture: any
+Section: doc
+Depends: ${misc:Depends}
+Enhances: libecore-dev
+Description: Ecore API Documentation
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package provides development documentation (html and manpages)for the
+ Ecore library.
+
+Package: libecore-bin
+Architecture: any
+Section: utils
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: Tools that support Ecore
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package includes:
+  - ecore_config: allows creation/editing of ecore_config databases
+
+Package: libecore-dbg
+Architecture: any
+Section: libdevel
+Priority: extra
+Depends: ${misc:Depends}, libecore (= ${binary:Version})
+Description: Debugging symbols for libecore
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications
+ .
+ This package contains unstripped shared libraries. It is provided primarily
+ to provide a backtrace with names in a debugger, this makes it somewhat easier
+ to interpret core dumps. The libraries are installed in /usr/lib/debug and
+ are automatically used by gdb.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..57d5703
--- /dev/null
@@ -0,0 +1,44 @@
+This package was debianized by Debian Pkg-e Team <pkg-e-devel@lists.alioth.debian.org> 
+Sat, 07 Jul 2007 09:29:10 +0000.
+
+It was downloaded from http://download.enlightenment.org/
+
+Upstream Authors:
+
+       Enlightenment team <enlightenment-devel@lists.sourceforge.net>
+
+Copyright:
+
+       Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
+
+    Additional Copyright:
+    src/lib/ecore/ecore_str.c: Copyright (c) 1998 Todd C. Miller
+        <Todd.Miller@courtesan.com>
+    src/lib/ecore/ecore_value.c: Copyright (C) 2001
+        Christopher Rosendahl <smugg@fatelabs.com>
+        Nathan Ingersoll      <ningerso@d.umn.edu>
+    src/lib/ecore_fb/ecore_fb_li.c: Copyright (C) 1999-2002 Brad Hards
+
+License:
+
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies of the Software, its documentation and marketing & publicity
+  materials, and acknowledgment shall be given in the documentation,
+  materials and software packages that this Software was used.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+  THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+On Debian systems, the complete text of the BSD License can be found
+in `/usr/share/common-licenses/BSD'.
diff --git a/debian/ecore_config.1 b/debian/ecore_config.1
new file mode 100644 (file)
index 0000000..ea857f4
--- /dev/null
@@ -0,0 +1,54 @@
+.\"Created with GNOME Manpages Editor Wizard
+.\"http://gmanedit.sourceforge.net
+.\"Sergio Rua <srua@gpul.org>
+.\"
+.TH ecore_config 1 "January 18, 2007" "Ecore"
+
+.SH NAME
+ecore_config \-that allow creation and editing of ecore_config databases
+
+.SH SYNOPSIS
+.B ecore_config
+.RI \-a\ |\ \-k\ [\-g|\-d|\-b|\-f|\-i|\-r|\-s|\-t]\ [\-c]
+.br
+
+.SH DESCRIPTION
+.PP
+\fBecore_config\fP is a tool that allows creation and editing of 
+ecore_config databases used by the programs relying on libecore
+
+.SH OPTIONS
+\fIecore_config\fP accepts the following options:
+.TP
+.B \-c, \-\-file=FILE
+Specify the config file to read
+.TP
+.B \-k, \-\-key=KEY
+Select the key KEY. Must be given for all commands except \-a
+.TP
+.B \-g, \-\-get
+get key
+.TP
+.B \-d, \-\-del
+delete key
+.TP
+.B \-b, \-\-bool=VALUE
+set boolean
+.TP
+.B \-f, \-\-float=VALUE
+set float
+.TP
+.B \-i, \-\-int=VALUE
+set integer
+.TP
+.B \-r, \-\-rgb=VALUE
+set RGBA
+.TP
+.B \-s, \-\-string=VALUE
+set string
+.TP
+.B \-t, \-\-theme=VALUE
+set theme
+.SH AUTHOR
+This manual page was written by Albin Tonnerre <albin.tonnerre@gmail.com> 
+for the Debian GNU/Linux system (but may be used by others).
diff --git a/debian/jobs b/debian/jobs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/libecore-bin.install b/debian/libecore-bin.install
new file mode 100644 (file)
index 0000000..24d1f12
--- /dev/null
@@ -0,0 +1 @@
+#debian/tmp/usr/bin/ecore_config
diff --git a/debian/libecore-con-svn-01.install b/debian/libecore-con-svn-01.install
new file mode 100644 (file)
index 0000000..4e6f99e
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_con-*.so.*
diff --git a/debian/libecore-con-svn-01.shlibs b/debian/libecore-con-svn-01.shlibs
new file mode 100644 (file)
index 0000000..d5353f3
--- /dev/null
@@ -0,0 +1 @@
+libecore_con-ver-pre-svn-01 0 libecore-con-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-con.install b/debian/libecore-con.install
new file mode 100644 (file)
index 0000000..1c47c56
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_con.so.*
diff --git a/debian/libecore-config-svn-01.install b/debian/libecore-config-svn-01.install
new file mode 100644 (file)
index 0000000..d497998
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_config-*.so.*
diff --git a/debian/libecore-config-svn-01.shlibs b/debian/libecore-config-svn-01.shlibs
new file mode 100644 (file)
index 0000000..ec0e971
--- /dev/null
@@ -0,0 +1 @@
+libecore_config-ver-pre-svn-01 0 libecore-config-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-config.install b/debian/libecore-config.install
new file mode 100644 (file)
index 0000000..8f31d99
--- /dev/null
@@ -0,0 +1 @@
+#debian/tmp/usr/lib/libecore_config.so.*
diff --git a/debian/libecore-dev.install b/debian/libecore-dev.install
new file mode 100755 (executable)
index 0000000..e6def58
--- /dev/null
@@ -0,0 +1,14 @@
+debian/tmp/usr/include/ecore-1/Ecore*.h
+debian/tmp/usr/lib/libecore*.a
+debian/tmp/usr/lib/libecore*.la
+debian/tmp/usr/lib/libecore*.so
+#debian/tmp/usr/lib/libecore_config*.so
+debian/tmp/usr/lib/libecore_con*.so
+debian/tmp/usr/lib/libecore_evas*.so
+debian/tmp/usr/lib/libecore_file*.so
+debian/tmp/usr/lib/libecore_imf_evas*.so
+debian/tmp/usr/lib/libecore_imf*.so
+debian/tmp/usr/lib/libecore_input*.so
+debian/tmp/usr/lib/libecore_ipc*.so
+debian/tmp/usr/lib/libecore_x*.so
+debian/tmp/usr/lib/pkgconfig/ecore*.pc
diff --git a/debian/libecore-doc.doc-base b/debian/libecore-doc.doc-base
new file mode 100644 (file)
index 0000000..9ab7e32
--- /dev/null
@@ -0,0 +1,10 @@
+Document: ecore
+Title: Ecore Guide
+Author: Carsten Haitzler
+Abstract: This document describes Ecore API
+ and provides sample C code.
+Section: Programming/C
+
+Format: HTML
+Index: /usr/share/doc/libecore-doc/html/index.html
+Files: /usr/share/doc/libecore-doc/html/*.html
diff --git a/debian/libecore-evas-svn-01.install b/debian/libecore-evas-svn-01.install
new file mode 100644 (file)
index 0000000..ceb9f01
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_evas-*.so.*
diff --git a/debian/libecore-evas-svn-01.shlibs b/debian/libecore-evas-svn-01.shlibs
new file mode 100644 (file)
index 0000000..92c2b6d
--- /dev/null
@@ -0,0 +1 @@
+libecore_evas-ver-pre-svn-01 0 libecore-evas-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-evas.install b/debian/libecore-evas.install
new file mode 100644 (file)
index 0000000..12d49fb
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_evas*.so.*
diff --git a/debian/libecore-fb-svn-01.install b/debian/libecore-fb-svn-01.install
new file mode 100644 (file)
index 0000000..72ceee2
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_fb-*.so.*
diff --git a/debian/libecore-fb-svn-01.shlibs b/debian/libecore-fb-svn-01.shlibs
new file mode 100644 (file)
index 0000000..2593f16
--- /dev/null
@@ -0,0 +1 @@
+libecore_fb-ver-pre-svn-01 0 libecore-fb-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-fb.install b/debian/libecore-fb.install
new file mode 100644 (file)
index 0000000..f228623
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_fb*.so.*
diff --git a/debian/libecore-file-svn-01.install b/debian/libecore-file-svn-01.install
new file mode 100644 (file)
index 0000000..a115a75
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_file-*.so.*
diff --git a/debian/libecore-file-svn-01.shlibs b/debian/libecore-file-svn-01.shlibs
new file mode 100644 (file)
index 0000000..868a4f6
--- /dev/null
@@ -0,0 +1 @@
+libecore_file-ver-pre-svn-01 0 libecore-file-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-file.install b/debian/libecore-file.install
new file mode 100644 (file)
index 0000000..74419ea
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_file*.so.*
diff --git a/debian/libecore-imf-svn-01.install b/debian/libecore-imf-svn-01.install
new file mode 100644 (file)
index 0000000..8da8885
--- /dev/null
@@ -0,0 +1,2 @@
+debian/tmp/usr/lib/libecore_imf-*.so.*
+debian/tmp/usr/lib/libecore_imf_evas-*.so.*
diff --git a/debian/libecore-imf-svn-01.shlibs b/debian/libecore-imf-svn-01.shlibs
new file mode 100644 (file)
index 0000000..15aeb84
--- /dev/null
@@ -0,0 +1,2 @@
+libecore_imf-ver-pre-svn-01 0 libecore-imf-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
+libecore_imf_evas-ver-pre-svn-01 0 libecore-imf-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-imf.install b/debian/libecore-imf.install
new file mode 100644 (file)
index 0000000..88f91c5
--- /dev/null
@@ -0,0 +1,2 @@
+debian/tmp/usr/lib/libecore_imf*.so.*
+debian/tmp/usr/lib/libecore_imf_evas*.so.*
diff --git a/debian/libecore-input-svn-01.install b/debian/libecore-input-svn-01.install
new file mode 100644 (file)
index 0000000..34d8efb
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_input-*.so.*
diff --git a/debian/libecore-input-svn-01.shlibs b/debian/libecore-input-svn-01.shlibs
new file mode 100644 (file)
index 0000000..b95c6bb
--- /dev/null
@@ -0,0 +1 @@
+libecore_input-ver-pre-svn-01 0 libecore-input-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-input.install b/debian/libecore-input.install
new file mode 100644 (file)
index 0000000..4509237
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_input*.so.*
diff --git a/debian/libecore-ipc-svn-01.install b/debian/libecore-ipc-svn-01.install
new file mode 100644 (file)
index 0000000..e118708
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_ipc-*.so.*
diff --git a/debian/libecore-ipc-svn-01.shlibs b/debian/libecore-ipc-svn-01.shlibs
new file mode 100644 (file)
index 0000000..6a9ae5a
--- /dev/null
@@ -0,0 +1 @@
+libecore_ipc-ver-pre-svn-01 0 libecore-ipc-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-ipc.install b/debian/libecore-ipc.install
new file mode 100644 (file)
index 0000000..f0421a3
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_ipc*.so.*
diff --git a/debian/libecore-svn-01.install b/debian/libecore-svn-01.install
new file mode 100644 (file)
index 0000000..22c55a3
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore-*.so.*
diff --git a/debian/libecore-svn-01.shlibs b/debian/libecore-svn-01.shlibs
new file mode 100644 (file)
index 0000000..43565e1
--- /dev/null
@@ -0,0 +1 @@
+libecore-ver-pre-svn-01 0 libecore-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-x-svn-01.install b/debian/libecore-x-svn-01.install
new file mode 100644 (file)
index 0000000..8c8007e
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_x-*.so.*
diff --git a/debian/libecore-x-svn-01.shlibs b/debian/libecore-x-svn-01.shlibs
new file mode 100644 (file)
index 0000000..b5a9660
--- /dev/null
@@ -0,0 +1 @@
+libecore_x-ver-pre-svn-01 0 libecore-x-svn-01 (>= 0.9.9.060+svnYYYYMMDD)
diff --git a/debian/libecore-x.install b/debian/libecore-x.install
new file mode 100644 (file)
index 0000000..e098222
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_x*.so.*
diff --git a/debian/libecore.install b/debian/libecore.install
new file mode 100644 (file)
index 0000000..7eef82a
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore.so.*
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..deaf736
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+
+DEB_CONFIGURE_SCRIPT := ./autogen.sh
+#DEB_INSTALL_MANPAGES_libecore-bin := debian/ecore_config.1
+DEB_DH_STRIP_ARGS := --dbg-package=libecore-dbg
+DEB_CONFIGURE_EXTRA_FLAGS := --enable-ecore-fb \
+        --enable-dependency-tracking \
+       --disable-ecore-directfb \
+       --enable-ecore-evas-fb \
+       --disable-rpath \
+       --disable-openssl \
+       --disable-gnutls \
+       --disable-tslib \
+       --disable-doc \
+       --enable-simple-x11 \
+       --enable-ecore-evas-opengl-x11 \
+       --disable-ecore-evas-xrender-x11 \
+       --enable-curl \
+       --disable-openssl \
+       --enable-glib-integration-always \
+       --enable-ecore-x-gesture \
+       --disable-xim \
+       --disable-ecore-imf-scim
+DEB_MAKE_EXTRA_ARGS := V=0
+
+DEB_MAKE_CLEAN_TARGET := distclean
+CFLAGS += -fvisibility=hidden -fPIC
+LDFLAGS += -fvisibility=hidden -Wl,--hash-style=both -Wl,--as-needed
+
+#build/libecore-doc::
+#      cd $(DEB_SRCDIR)/doc && make doc
+
+#install/libecore-doc::
+#      mkdir -p debian/libecore-doc/usr/share/doc/libecore-doc
+#      cp -R $(DEB_SRCDIR)/doc/html debian/libecore-doc/usr/share/doc/libecore-doc/
+
+clean::
+       [ ! -f Makefile ] || make distclean
+       rm -f ecore-*.tar.bz2 ecore-*.tar.bz2.cdbs-config_list
index bab3df5..d70bfb5 100644 (file)
@@ -35,7 +35,7 @@
 %define ac_with_lib_ecore_imf       --%{?with_lib_ecore_imf:en}%{!?with_lib_ecore_imf:dis}able-ecore-imf
 %define ac_with_lib_ecore_sdl       --%{?with_lib_ecore_sdl:en}%{!?with_lib_ecore_sdl:dis}able-ecore-sdl
 
-%{!?_rel:%{expand:%%global _rel 0.enl%{?dist}}}
+%{!?_rel:%{expand:%%global _rel 0.r%(svnversion | sed 's/[^0-9].*$//' || echo 0000)}}
 
 Summary: Enlightened Core X interface library
 Name: @PACKAGE@
diff --git a/packaging/ecore.spec b/packaging/ecore.spec
new file mode 100644 (file)
index 0000000..409a81f
--- /dev/null
@@ -0,0 +1,309 @@
+#sbs-git:slp/pkgs/e/ecore ecore 1.1.0+svn.69115slp2+build01 f1fcb7acee67ba61b43c4c5bcf6a0255195b3bbe
+Name:       ecore
+Summary:    Enlightened Core X interface library
+Version:    1.2.0+svn.70159slp2+build01
+Release:    1
+Group:      System/Libraries
+License:    BSD
+URL:        http://www.enlightenment.org
+Source0:    %{name}-%{version}.tar.gz
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(eet)
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(xcursor)
+BuildRequires:  pkgconfig(xrender)
+BuildRequires:  pkgconfig(xinerama)
+BuildRequires:  pkgconfig(xrandr)
+BuildRequires:  pkgconfig(xext)
+BuildRequires:  pkgconfig(xi)
+BuildRequires:  pkgconfig(xfixes)
+BuildRequires:  pkgconfig(xcomposite)
+BuildRequires:  pkgconfig(xdamage)
+BuildRequires:  pkgconfig(xextproto)
+BuildRequires:  pkgconfig(xtst)
+BuildRequires:  pkgconfig(libcurl)
+BuildRequires:  libjpeg-devel
+
+
+%description
+Core abstraction layer for enlightenment DR 0.17 This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+
+
+
+%package devel
+Summary:    Enlightened Core X interface library (devel)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+
+%description devel
+Core abstraction layer for enlightenment (devel)
+
+%package tools
+Summary:    Enlightened Core X interface library (bin)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Provides:   %{name}-bin
+Obsoletes:  %{name}-bin
+
+%description tools
+Core abstraction layer for enlightenment (tools)
+
+%package con
+Summary:    Enlightened Core X interface library (con)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description con
+Core abstraction layer for enlightenment (con)
+
+%package evas
+Summary:    Enlightened Core X interface library (evas)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description evas
+Core abstraction layer for enlightenment (evas)
+
+%package file
+Summary:    Enlightened Core X interface library (file)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description file
+Core abstraction layer for enlightenment (file)
+
+%package imf
+Summary:    Enlightened Core X interface library (imf)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description imf
+Core abstraction layer for enlightenment (imf)
+
+%package imf-evas
+Summary:    Enlightened Core X interface library (imf-evas)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description imf-evas
+Core abstraction layer for enlightenment (imf-evas)
+
+%package input
+Summary:    Enlightened Core X interface library (input)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description input
+Core abstraction layer for enlightenment (input)
+
+%package input-evas
+Summary:    Enlightened Core X interface library (input-evas)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description input-evas
+Core abstraction layer for enlightenment (input-evas)
+
+%package ipc
+Summary:    Enlightened Core X interface library (ipc)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description ipc
+Core abstraction layer for enlightenment (ipc)
+
+%package x
+Summary:    Enlightened Core X interface library (x)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description x
+Core abstraction layer for enlightenment (x)
+
+%package fb
+Summary:    Enlightened Core X interface library (fb)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description fb
+Core abstraction layer for enlightenment (fb)
+
+
+%prep
+%setup -q
+
+
+%build
+export CFLAGS+=" -fvisibility=hidden -fPIC"
+export LDFLAGS+=" -fvisibility=hidden -Wl,--hash-style=both -Wl,--as-needed"
+
+%autogen
+%configure --disable-static \
+       --enable-ecore-fb \
+       --enable-dependency-tracking \
+       --disable-ecore-directfb \
+       --enable-ecore-evas-fb \
+       --disable-rpath \
+       --disable-openssl \
+       --disable-gnutls \
+       --disable-tslib \
+       --enable-simple-x11 \
+       --enable-ecore-evas-opengl-x11 \
+       --disable-ecore-evas-xrender-x11 \
+       --enable-curl \
+        --enable-glib-integration-always \
+       --enable-ecore-x-gesture \
+        --disable-xim \
+       --disable-ecore-imf-scim
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%post con -p /sbin/ldconfig
+
+%postun con -p /sbin/ldconfig
+
+%post evas -p /sbin/ldconfig
+
+%postun evas -p /sbin/ldconfig
+
+
+%post file -p /sbin/ldconfig
+
+%postun file -p /sbin/ldconfig
+
+
+%post imf -p /sbin/ldconfig
+
+%postun imf -p /sbin/ldconfig
+
+
+%post imf-evas -p /sbin/ldconfig
+
+%postun imf-evas -p /sbin/ldconfig
+
+
+%post input -p /sbin/ldconfig
+
+%postun input -p /sbin/ldconfig
+
+
+%post input-evas -p /sbin/ldconfig
+
+%postun input-evas -p /sbin/ldconfig
+
+
+%post ipc -p /sbin/ldconfig
+
+%postun ipc -p /sbin/ldconfig
+
+
+%post x -p /sbin/ldconfig
+
+%postun x -p /sbin/ldconfig
+
+
+%post fb -p /sbin/ldconfig
+
+%postun fb -p /sbin/ldconfig
+
+%files 
+%defattr(-,root,root,-)
+%{_libdir}/libecore.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/ecore-1/*.h
+%{_libdir}/pkgconfig/ecore*.pc
+%{_libdir}/libecore.so
+%{_libdir}/libecore_con.so
+%{_libdir}/libecore_evas.so
+%{_libdir}/libecore_file.so
+%{_libdir}/libecore_imf.so
+%{_libdir}/libecore_imf_evas.so
+%{_libdir}/libecore_input.so
+%{_libdir}/libecore_input_evas.so
+%{_libdir}/libecore_ipc.so
+%{_libdir}/libecore_x.so
+%{_libdir}/libecore_fb.so
+
+%files tools
+%defattr(-,root,root,-)
+#/usr/bin/ecore_test
+
+%files con
+%defattr(-,root,root,-)
+%{_libdir}/libecore_con.so.*
+
+%files evas
+%defattr(-,root,root,-)
+%{_libdir}/libecore_evas.so.*
+
+%files file
+%defattr(-,root,root,-)
+%{_libdir}/libecore_file.so.*
+
+%files imf
+%defattr(-,root,root,-)
+%{_libdir}/libecore_imf.so.*
+
+%files imf-evas
+%defattr(-,root,root,-)
+%{_libdir}/libecore_imf_evas.so.*
+
+%files input
+%defattr(-,root,root,-)
+%{_libdir}/libecore_input.so.*
+/usr/lib/ecore/immodules/xim.so
+
+%files input-evas
+%defattr(-,root,root,-)
+%{_libdir}/libecore_input_evas.so.*
+
+%files ipc
+%defattr(-,root,root,-)
+%{_libdir}/libecore_ipc.so.*
+
+%files x
+%defattr(-,root,root,-)
+%{_libdir}/libecore_x.so.*
+
+%files fb
+%defattr(-,root,root,-)
+%{_libdir}/libecore_fb.so.*
+
index 69e14bc..30860d4 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,6 +1,5 @@
 # ecore czech translation
 # quaker66@gmail.com
-# Vít Pelčák <vit@pelcak.org>, 2011.
 msgid ""
 msgstr ""
 "Project-Id-Version: ecore\n"
@@ -13,8 +12,6 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.2\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
 #: src/lib/ecore/ecore_getopt.c:95
 msgid "Version:"
@@ -156,12 +153,12 @@ msgstr "CHYBA: nalezeny neplatné volby."
 #: src/lib/ecore/ecore_getopt.c:1837
 #, c-format
 msgid " See --%s.\n"
-msgstr " Viz --%s.\n"
+msgstr " viz. --%s.\n"
 
 #: src/lib/ecore/ecore_getopt.c:1839
 #, c-format
 msgid " See -%c.\n"
-msgstr " Viz -%c.\n"
+msgstr " viz. -%c.\n"
 
 #: src/lib/ecore/ecore_getopt.c:1882
 #, c-format
index af70643..d4659d6 100644 (file)
 
 #ifdef EFL_HAVE_THREADS
 
-# define LK(x) Eina_Lock x
-# define LKI(x) eina_lock_new(&(x))
-# define LKD(x) eina_lock_free(&(x))
-# define LKL(x) eina_lock_take(&(x))
-# define LKU(x) eina_lock_release(&(x))
-
-# define CD(x) Eina_Condition x
-# define CDI(x, m) eina_condition_new(&(x), &(m))
-# define CDD(x) eina_condition_free(&(x))
-# define CDB(x) eina_condition_broadcast(&(x))
-# define CDW(x, t) eina_condition_timedwait(&(x), t)
-
-# define LRWK(x) Eina_RWLock x
-# define LRWKI(x) eina_rwlock_new(&(x));
-# define LRWKD(x) eina_rwlock_free(&(x));
-# define LRWKWL(x) eina_rwlock_take_write(&(x));
-# define LRWKRL(x) eina_rwlock_take_read(&(x));
-# define LRWKU(x) eina_rwlock_release(&(x));
-
 # ifdef EFL_HAVE_POSIX_THREADS
 #  include <pthread.h>
 #  ifdef __linux__
 #  define PHE(x, y)    pthread_equal(x, y)
 #  define PHS()        pthread_self()
 #  define PHC(x, f, d) pthread_create(&(x), NULL, (void *)f, d)
-#  define PHJ(x)       pthread_join(x, NULL)
+#  define PHJ(x, p)    pthread_join(x, (void **)(&(p)))
 #  define PHA(x)       pthread_cancel(x)
 
+#  define CD(x)        pthread_cond_t x
+#  define CDI(x)       pthread_cond_init(&(x), NULL);
+#  define CDD(x)       pthread_cond_destroy(&(x));
+#  define CDB(x)       pthread_cond_broadcast(&(x));
+#  define CDW(x, y, t) pthread_cond_timedwait(&(x), &(y), t);
+
+#  define LK(x)        pthread_mutex_t x
+#  define LKI(x)       pthread_mutex_init(&(x), NULL);
+#  define LKD(x)       pthread_mutex_destroy(&(x));
+#  define LKL(x)       pthread_mutex_lock(&(x));
+#  define LKU(x)       pthread_mutex_unlock(&(x));
+
+#  define LRWK(x)      pthread_rwlock_t x
+#  define LRWKI(x)     pthread_rwlock_init(&(x), NULL);
+#  define LRWKD(x)     pthread_rwlock_destroy(&(x));
+#  define LRWKWL(x)    pthread_rwlock_wrlock(&(x));
+#  define LRWKRL(x)    pthread_rwlock_rdlock(&(x));
+#  define LRWKU(x)     pthread_rwlock_unlock(&(x));
+
 # else /* EFL_HAVE_WIN32_THREADS */
 
 #  define WIN32_LEAN_AND_MEAN
@@ -108,9 +108,209 @@ _ecore_thread_win32_join(win32_thread *x,
    return 0;
 }
 
-#  define PHJ(x) _ecore_thread_win32_join(x, NULL)
+#  define PHJ(x, p) _ecore_thread_win32_join(x, (void **)(&(p)))
 #  define PHA(x)    TerminateThread(x->thread, 0)
 
+#  define LK(x)     HANDLE x
+#  define LKI(x)    x = CreateMutex(NULL, FALSE, NULL)
+#  define LKD(x)    CloseHandle(x)
+#  define LKL(x)    WaitForSingleObject(x, INFINITE)
+#  define LKU(x)    ReleaseMutex(x)
+
+typedef struct
+{
+   HANDLE           semaphore;
+   LONG             threads_count;
+   CRITICAL_SECTION threads_count_lock;
+} win32_cond;
+
+#  define CD(x) win32_cond * x
+
+#  define CDI(x)                                                       \
+  do {                                                                 \
+       x = (win32_cond *)calloc(1, sizeof(win32_cond));                \
+       if (x)                                                          \
+         {                                                             \
+            x->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL); \
+            if (x->semaphore)                                          \
+              InitializeCriticalSection(&x->threads_count_lock);       \
+            else                                                       \
+              {                                                        \
+                 free(x);                                              \
+                 x = NULL;                                             \
+              }                                                        \
+         }                                                             \
+    } while (0)
+
+#  define CDD(x)                  \
+  do {                            \
+       CloseHandle(x->semaphore); \
+       free(x);                   \
+       x = NULL;                  \
+    } while (0)
+
+#  define CDB(x)                                                  \
+  do {                                                            \
+       EnterCriticalSection(&x->threads_count_lock);              \
+       if (x->threads_count > 0)                                  \
+         ReleaseSemaphore(x->semaphore, x->threads_count, NULL);  \
+       LeaveCriticalSection (&x->threads_count_lock);             \
+    } while (0)
+
+int
+_ecore_thread_win32_cond_timedwait(win32_cond     *c,
+                                   HANDLE         *external_mutex,
+                                   struct timeval *t)
+{
+   DWORD res;
+   DWORD val = t->tv_sec * 1000 + (t->tv_usec / 1000);
+   LKL(external_mutex);
+   EnterCriticalSection (&c->threads_count_lock);
+   c->threads_count++;
+   LeaveCriticalSection (&c->threads_count_lock);
+   LKU(external_mutex);
+   res = WaitForSingleObject(c->semaphore, val);
+   if (res == WAIT_OBJECT_0)
+     return 0;
+   else
+     return -1;
+}
+
+#  define CDW(x, y, t) _ecore_thread_win32_cond_timedwait(x, y, t)
+
+typedef struct
+{
+   LONG readers_count;
+   LONG writers_count;
+   int  readers;
+   int  writers;
+   LK(mutex);
+   CD(cond_read);
+   CD(cond_write);
+} win32_rwl;
+
+#  define LRWK(x) win32_rwl * x
+#  define LRWKI(x)                                    \
+  do {                                                \
+       x = (win32_rwl *)calloc(1, sizeof(win32_rwl)); \
+       if (x)                                         \
+         {                                            \
+            LKI(x->mutex);                            \
+            if (x->mutex)                             \
+              {                                       \
+                 CDI(x->cond_read);                   \
+                 if (x->cond_read)                    \
+                   {                                  \
+                      CDI(x->cond_write);             \
+                      if (!x->cond_write)             \
+                        {                             \
+                           CDD(x->cond_read);         \
+                           LKD(x->mutex);             \
+                           free(x);                   \
+                           x = NULL;                  \
+                        }                             \
+                   }                                  \
+                 else                                 \
+                   {                                  \
+                      LKD(x->mutex);                  \
+                      free(x);                        \
+                      x = NULL;                       \
+                   }                                  \
+              }                                       \
+            else                                      \
+              {                                       \
+                 free(x);                             \
+                 x = NULL;                            \
+              }                                       \
+         }                                            \
+    } while (0)
+
+#  define LRWKD(x)         \
+  do {                     \
+       LKU(x->mutex);      \
+       LKD(x->mutex);      \
+       CDD(x->cond_write); \
+       CDD(x->cond_read);  \
+       free(x);            \
+    } while (0)
+#  define LRWKWL(x)                                                             \
+  do {                                                                          \
+       DWORD res;                                                               \
+       LKU(x->mutex);                                                           \
+       if (x->writers || x->readers > 0)                                        \
+         {                                                                      \
+            x->writers_count++;                                                 \
+            while (x->writers || x->readers > 0)                                \
+              {                                                                 \
+                 EnterCriticalSection(&x->cond_write->threads_count_lock);      \
+                 x->cond_read->threads_count++;                                 \
+                 LeaveCriticalSection(&x->cond_write->threads_count_lock);      \
+                 res = WaitForSingleObject(x->cond_write->semaphore, INFINITE); \
+                 if (res != WAIT_OBJECT_0) break;                               \
+              }                                                                 \
+            x->writers_count--;                                                 \
+         }                                                                      \
+       if (res == 0) x->writers_count = 1;                                      \
+       LKU(x->mutex);                                                           \
+    } while (0)
+#  define LRWKRL(x)                                                             \
+  do {                                                                          \
+       DWORD res;                                                               \
+       LKL(x->mutex);                                                           \
+       if (x->writers)                                                          \
+         {                                                                      \
+            x->readers_count++;                                                 \
+            while (x->writers)                                                  \
+              {                                                                 \
+                 EnterCriticalSection(&x->cond_write->threads_count_lock);      \
+                 x->cond_read->threads_count++;                                 \
+                 LeaveCriticalSection(&x->cond_write->threads_count_lock);      \
+                 res = WaitForSingleObject(x->cond_write->semaphore, INFINITE); \
+                 if (res != WAIT_OBJECT_0) break;                               \
+              }                                                                 \
+            x->readers_count--;                                                 \
+         }                                                                      \
+       if (res == 0)                                                            \
+         x->readers++;                                                          \
+       LKU(x->mutex);                                                           \
+    } while (0)
+#  define LRWKU(x)                                                          \
+  do {                                                                      \
+       LKL(x->mutex);                                                       \
+       if (x->writers)                                                      \
+         {                                                                  \
+            x->writers = 0;                                                 \
+            if (x->readers_count == 1)                                      \
+              {                                                             \
+                 EnterCriticalSection(&x->cond_read->threads_count_lock);   \
+                 if (x->cond_read->threads_count > 0)                       \
+                   ReleaseSemaphore(x->cond_read->semaphore, 1, 0);         \
+                 LeaveCriticalSection(&x->cond_read->threads_count_lock);   \
+              }                                                             \
+            else if (x->readers_count > 0)                                  \
+              CDB(x->cond_read);                                            \
+            else if (x->writers_count > 0)                                  \
+              {                                                             \
+                 EnterCriticalSection (&x->cond_write->threads_count_lock); \
+                 if (x->cond_write->threads_count > 0)                      \
+                   ReleaseSemaphore(x->cond_write->semaphore, 1, 0);        \
+                 LeaveCriticalSection (&x->cond_write->threads_count_lock); \
+              }                                                             \
+         }                                                                  \
+       else if (x->readers > 0)                                             \
+         {                                                                  \
+            x->readers--;                                                   \
+            if (x->readers == 0 && x->writers_count > 0)                    \
+              {                                                             \
+                 EnterCriticalSection (&x->cond_write->threads_count_lock); \
+                 if (x->cond_write->threads_count > 0)                      \
+                   ReleaseSemaphore(x->cond_write->semaphore, 1, 0);        \
+                 LeaveCriticalSection (&x->cond_write->threads_count_lock); \
+              }                                                             \
+         }                                                                  \
+       LKU(x->mutex);                                                       \
+    } while (0)
+
 # endif
 
 #endif
@@ -136,24 +336,14 @@ struct _Ecore_Pthread_Worker
       {
          Ecore_Thread_Cb        func_heavy;
          Ecore_Thread_Notify_Cb func_notify;
+         Ecore_Pipe            *notify;
 
+         Ecore_Pipe            *direct_pipe;
          Ecore_Pthread_Worker  *direct_worker;
 
          int                    send;
          int                    received;
       } feedback_run;
-      struct {
-         Ecore_Thread_Cb func_main;
-         Ecore_Thread_Notify_Cb func_notify;
-
-         Ecore_Pipe            *send;
-         Ecore_Pthread_Worker  *direct_worker;
-
-         struct {
-            int send;
-            int received;
-         } from, to;
-      } message_run;
    } u;
 
    Ecore_Thread_Cb func_cancel;
@@ -167,63 +357,47 @@ struct _Ecore_Pthread_Worker
 
    const void     *data;
 
-   volatile int cancel;
-
-#ifdef EFL_HAVE_THREADS
-   LK(cancel_mutex);
-#endif
-
-   Eina_Bool message_run : 1;
-   Eina_Bool feedback_run : 1;
-   Eina_Bool kill : 1;
-   Eina_Bool reschedule : 1;
-   Eina_Bool no_queue : 1;
+   Eina_Bool       cancel : 1;
+   Eina_Bool       feedback_run : 1;
+   Eina_Bool       kill : 1;
+   Eina_Bool       reschedule : 1;
+   Eina_Bool       no_queue : 1;
 };
 
 #ifdef EFL_HAVE_THREADS
 typedef struct _Ecore_Pthread_Data Ecore_Pthread_Data;
+
 struct _Ecore_Pthread_Data
 {
    Ecore_Pthread_Worker *death_job;
+   Ecore_Pipe           *p;
    void                 *data;
                          PH(thread);
 };
-
-typedef struct _Ecore_Pthread_Notify Ecore_Pthread_Notify;
-struct _Ecore_Pthread_Notify
-{
-   Ecore_Pthread_Worker *work;
-   const void *user_data;
-};
-
-typedef void *(*Ecore_Thread_Sync_Cb)(void* data, Ecore_Thread *thread);
-
-typedef struct _Ecore_Pthread_Message Ecore_Pthread_Message;
-struct _Ecore_Pthread_Message
-{
-   union {
-      Ecore_Thread_Cb async;
-      Ecore_Thread_Sync_Cb sync;
-   } u;
-
-   const void *data;
-
-   int code;
-
-   Eina_Bool callback : 1;
-   Eina_Bool sync : 1;
-};
-
 #endif
 
 static int _ecore_thread_count_max = 0;
+static int ECORE_THREAD_PIPE_DEL = 0;
+static Eina_Array *_ecore_thread_pipe = NULL;
 
 #ifdef EFL_HAVE_THREADS
 
-static void _ecore_thread_handler(void *data);
+static void _ecore_thread_handler(void        *data __UNUSED__,
+                                  void        *buffer,
+                                  unsigned int nbyte);
+
+static Ecore_Pipe *
+_ecore_thread_pipe_get(void)
+{
+   if (eina_array_count(_ecore_thread_pipe) > 0)
+     return eina_array_pop(_ecore_thread_pipe);
+
+   return ecore_pipe_add(_ecore_thread_handler, NULL);
+}
 
 static int _ecore_thread_count = 0;
 
+static Ecore_Event_Handler *del_handler = NULL;
 static Eina_List *_ecore_active_job_threads = NULL;
 static Eina_List *_ecore_pending_job_threads = NULL;
 static Eina_List *_ecore_pending_job_threads_feedback = NULL;
@@ -261,11 +435,7 @@ static PH(get_main_loop_thread) (void)
 static void
 _ecore_thread_worker_free(Ecore_Pthread_Worker *worker)
 {
-   LKD(worker->cancel_mutex);
-   CDD(worker->cond);
-   LKD(worker->mutex);
-
-   if (_ecore_thread_worker_count > ((_ecore_thread_count_max + 1) * 16))
+   if (_ecore_thread_worker_count > (_ecore_thread_count_max + 1) * 16)
      {
         free(worker);
         return;
@@ -284,18 +454,38 @@ _ecore_thread_data_free(void *data)
 }
 
 static void
+_ecore_thread_pipe_free(void *data __UNUSED__,
+                        void *event)
+{
+   Ecore_Pipe *p = event;
+
+   if (eina_array_count(_ecore_thread_pipe) < 50)
+     eina_array_push(_ecore_thread_pipe, p);
+   else
+     ecore_pipe_del(p);
+   eina_threads_shutdown();
+}
+
+static Eina_Bool
+_ecore_thread_pipe_del(void *data __UNUSED__,
+                       int   type __UNUSED__,
+                       void *event __UNUSED__)
+{
+   /* This is a hack to delay pipe destruction until we are out of its internal loop. */
+    return ECORE_CALLBACK_CANCEL;
+}
+
+static void
 _ecore_thread_end(Ecore_Pthread_Data *pth,
                   Ecore_Thread       *work)
 {
    Ecore_Pthread_Worker *worker = (Ecore_Pthread_Worker *)work;
+   Ecore_Pipe *p;
 
-   if (((!worker->message_run) || 
-        (!worker->feedback_run) ||
-        ((worker->feedback_run) && (!worker->no_queue))) &&
-       (!worker->no_queue))
+   if (!worker->feedback_run || (worker->feedback_run && !worker->no_queue))
      _ecore_thread_count--;
 
-   if (PHJ(pth->thread) != 0)
+   if (PHJ(pth->thread, p) != 0)
      return;
 
    if (eina_list_count(_ecore_pending_job_threads) > 0
@@ -306,7 +496,7 @@ _ecore_thread_end(Ecore_Pthread_Data *pth,
          INF("spawning threads because of still pending jobs.");
 
          pth->death_job = _ecore_thread_worker_new();
-         if (!pth->death_job) goto end;
+         if (!pth->p || !pth->death_job) goto end;
 
          eina_threads_init();
 
@@ -324,6 +514,7 @@ end:
 
    _ecore_active_job_threads = eina_list_remove(_ecore_active_job_threads, pth);
 
+   ecore_event_add(ECORE_THREAD_PIPE_DEL, pth->p, _ecore_thread_pipe_free, NULL);
    free(pth);
 }
 
@@ -343,18 +534,30 @@ _ecore_thread_kill(Ecore_Pthread_Worker *work)
 
    if (work->feedback_run)
      {
+        ecore_pipe_del(work->u.feedback_run.notify);
+
+        if (work->u.feedback_run.direct_pipe)
+          eina_array_push(_ecore_thread_pipe, work->u.feedback_run.direct_pipe);
         if (work->u.feedback_run.direct_worker)
           _ecore_thread_worker_free(work->u.feedback_run.direct_worker);
      }
+   CDD(work->cond);
+   LKD(work->mutex);
    if (work->hash)
      eina_hash_free(work->hash);
    _ecore_thread_worker_free(work);
 }
 
 static void
-_ecore_thread_handler(void *data)
+_ecore_thread_handler(void        *data __UNUSED__,
+                      void        *buffer,
+                      unsigned int nbyte)
 {
-   Ecore_Pthread_Worker *work = data;
+   Ecore_Pthread_Worker *work;
+
+   if (nbyte != sizeof (Ecore_Pthread_Worker *)) return;
+
+   work = *(Ecore_Pthread_Worker **)buffer;
 
    if (work->feedback_run)
      {
@@ -368,20 +571,17 @@ _ecore_thread_handler(void *data)
    _ecore_thread_kill(work);
 }
 
-#if 0
 static void
-_ecore_nothing_handler(void *data __UNUSED__, void *buffer __UNUSED__, unsigned int nbyte __UNUSED__)
+_ecore_notify_handler(void        *data,
+                      void        *buffer,
+                      unsigned int nbyte)
 {
-}
-#endif
+   Ecore_Pthread_Worker *work = data;
+   void *user_data;
 
-static void
-_ecore_notify_handler(void *data)
-{
-   Ecore_Pthread_Notify *notify = data;
-   Ecore_Pthread_Worker *work = notify->work;
-   void *user_data = (void*) notify->user_data;
+   if (nbyte != sizeof (Ecore_Pthread_Worker *)) return;
 
+   user_data = *(void **)buffer;
    work->u.feedback_run.received++;
 
    if (work->u.feedback_run.func_notify)
@@ -392,64 +592,16 @@ _ecore_notify_handler(void *data)
      {
         _ecore_thread_kill(work);
      }
-
-   free(notify);
-}
-
-static void
-_ecore_message_notify_handler(void *data)
-{
-   Ecore_Pthread_Notify *notify = data;
-   Ecore_Pthread_Worker *work = notify->work;
-   Ecore_Pthread_Message *user_data = (void *) notify->user_data;
-   Eina_Bool delete = EINA_TRUE;
-
-   work->u.message_run.from.received++;
-
-   if (!user_data->callback)
-     {
-        if (work->u.message_run.func_notify)
-          work->u.message_run.func_notify((void *) work->data, (Ecore_Thread *) work, (void *) user_data->data);
-     }
-   else
-     {
-        if (user_data->sync)
-          {
-             user_data->data = user_data->u.sync((void*) user_data->data, (Ecore_Thread *) work);
-             user_data->callback = EINA_FALSE;
-             user_data->code = INT_MAX;
-             ecore_pipe_write(work->u.message_run.send, &user_data, sizeof (Ecore_Pthread_Message *));
-
-             delete = EINA_FALSE;
-          }
-        else
-          {
-             user_data->u.async((void*) user_data->data, (Ecore_Thread *) work);
-          }
-     }
-
-   if (delete)
-     {
-        free(user_data);
-     }
-
-   /* Force reading all notify event before killing the thread */
-   if (work->kill && work->u.message_run.from.send == work->u.message_run.from.received)
-     {
-        _ecore_thread_kill(work);
-     }
-   free(notify);
 }
 
 static void
-_ecore_short_job(PH(thread))
+_ecore_short_job(Ecore_Pipe *end_pipe,
+                PH(thread))
 {
    Ecore_Pthread_Worker *work;
 
    while (_ecore_pending_job_threads)
      {
-        int cancel;
-
         LKL(_ecore_pending_job_threads_mutex);
 
         if (!_ecore_pending_job_threads)
@@ -464,12 +616,9 @@ _ecore_short_job(PH(thread))
 
         LKU(_ecore_pending_job_threads_mutex);
 
-        LKL(work->cancel_mutex);
-        cancel = work->cancel;
-        LKU(work->cancel_mutex);
         work->self = thread;
-        if (!cancel)
-          work->u.short_run.func_blocking((void *) work->data, (Ecore_Thread*) work);
+        if (!work->cancel)
+          work->u.short_run.func_blocking((void *)work->data, (Ecore_Thread *)work);
 
         if (work->reschedule)
           {
@@ -481,20 +630,19 @@ _ecore_short_job(PH(thread))
           }
         else
           {
-             ecore_main_loop_thread_safe_call_async(_ecore_thread_handler, work);
+             ecore_pipe_write(end_pipe, &work, sizeof (Ecore_Pthread_Worker *));
           }
      }
 }
 
 static void
-_ecore_feedback_job(PH(thread))
+_ecore_feedback_job(Ecore_Pipe *end_pipe,
+                    PH(thread))
 {
    Ecore_Pthread_Worker *work;
 
    while (_ecore_pending_job_threads_feedback)
      {
-        int cancel;
-
         LKL(_ecore_pending_job_threads_mutex);
 
         if (!_ecore_pending_job_threads_feedback)
@@ -509,12 +657,9 @@ _ecore_feedback_job(PH(thread))
 
         LKU(_ecore_pending_job_threads_mutex);
 
-        LKL(work->cancel_mutex);
-        cancel = work->cancel;
-        LKU(work->cancel_mutex);
         work->self = thread;
-        if (!cancel)
-          work->u.feedback_run.func_heavy((void *) work->data, (Ecore_Thread *) work);
+        if (!work->cancel)
+          work->u.feedback_run.func_heavy((void *)work->data, (Ecore_Thread *)work);
 
         if (work->reschedule)
           {
@@ -526,7 +671,7 @@ _ecore_feedback_job(PH(thread))
           }
         else
           {
-             ecore_main_loop_thread_safe_call_async(_ecore_thread_handler, work);
+             ecore_pipe_write(end_pipe, &work, sizeof (Ecore_Pthread_Worker *));
           }
      }
 }
@@ -534,7 +679,6 @@ _ecore_feedback_job(PH(thread))
 static void *
 _ecore_direct_worker(Ecore_Pthread_Worker *work)
 {
-   Ecore_Pthread_Worker *end;
    Ecore_Pthread_Data *pth;
 
 #ifdef EFL_POSIX_THREADS
@@ -547,49 +691,40 @@ _ecore_direct_worker(Ecore_Pthread_Worker *work)
    pth = malloc(sizeof (Ecore_Pthread_Data));
    if (!pth) return NULL;
 
+   pth->p = work->u.feedback_run.direct_pipe;
+   if (!pth->p)
+     {
+        free(pth);
+        return NULL;
+     }
    pth->thread = PHS();
 
    work->self = pth->thread;
-   if (work->message_run)
-     work->u.message_run.func_main((void *) work->data, (Ecore_Thread *) work);
-   else
-     work->u.feedback_run.func_heavy((void *) work->data, (Ecore_Thread *) work);
-
-   if (work->message_run)
-     {
-        end = work->u.message_run.direct_worker;
-        work->u.message_run.direct_worker = NULL;
-     }
-   else
-     {
-        end = work->u.feedback_run.direct_worker;
-        work->u.feedback_run.direct_worker = NULL;
-     }
+   work->u.feedback_run.func_heavy((void *)work->data, (Ecore_Thread *)work);
 
-   ecore_main_loop_thread_safe_call_async(_ecore_thread_handler, work);
+   ecore_pipe_write(pth->p, &work, sizeof (Ecore_Pthread_Worker *));
 
-   if (!end)
+   work = work->u.feedback_run.direct_worker;
+   if (!work)
      {
         free(pth);
         return NULL;
      }
 
-   end->data = pth;
-   end->u.short_run.func_blocking = NULL;
-   end->func_end = (void *)_ecore_thread_end;
-   end->func_cancel = NULL;
-   end->cancel = EINA_FALSE;
-   end->feedback_run = EINA_FALSE;
-   end->message_run = EINA_FALSE;
-//   end->no_queue = EINA_FALSE;
-   end->kill = EINA_FALSE;
-   end->hash = NULL;
-   LKI(end->mutex);
-   CDI(end->cond, end->mutex);
-
-   ecore_main_loop_thread_safe_call_async(_ecore_thread_handler, end);
+   work->data = pth;
+   work->u.short_run.func_blocking = NULL;
+   work->func_end = (void *)_ecore_thread_end;
+   work->func_cancel = NULL;
+   work->cancel = EINA_FALSE;
+   work->feedback_run = EINA_FALSE;
+   work->kill = EINA_FALSE;
+   work->hash = NULL;
+   CDI(work->cond);
+   LKI(work->mutex);
+
+   ecore_pipe_write(pth->p, &work, sizeof (Ecore_Pthread_Worker *));
 
-   return NULL;
+   return pth->p;
 }
 
 static void *
@@ -605,8 +740,8 @@ _ecore_thread_worker(Ecore_Pthread_Data *pth)
    eina_sched_prio_drop();
 
 restart:
-   if (_ecore_pending_job_threads) _ecore_short_job(pth->thread);
-   if (_ecore_pending_job_threads_feedback) _ecore_feedback_job(pth->thread);
+   if (_ecore_pending_job_threads) _ecore_short_job(pth->p, pth->thread);
+   if (_ecore_pending_job_threads_feedback) _ecore_feedback_job(pth->p, pth->thread);
 
    /* FIXME: Check if there is feedback running task todo, and switch to feedback run handler. */
 
@@ -642,14 +777,14 @@ restart:
    work->func_cancel = NULL;
    work->cancel = EINA_FALSE;
    work->feedback_run = EINA_FALSE;
-   work->message_run = EINA_FALSE;
    work->kill = EINA_FALSE;
-//   work->no_queue = EINA_FALSE;
    work->hash = NULL;
+   CDI(work->cond);
+   LKI(work->mutex);
 
-   ecore_main_loop_thread_safe_call_async(_ecore_thread_handler, work);
+   ecore_pipe_write(pth->p, &work, sizeof (Ecore_Pthread_Worker *));
 
-   return NULL;
+   return pth->p;
 }
 
 #endif
@@ -665,10 +800,6 @@ _ecore_thread_worker_new(void)
    if (!result) result = malloc(sizeof (Ecore_Pthread_Worker));
    else _ecore_thread_worker_count--;
 
-   LKI(result->cancel_mutex);
-   LKI(result->mutex);
-   CDI(result->cond, result->mutex);
-
    return result;
 #else
    return malloc(sizeof (Ecore_Pthread_Worker));
@@ -682,11 +813,16 @@ _ecore_thread_init(void)
    if (_ecore_thread_count_max <= 0)
      _ecore_thread_count_max = 1;
 
+   ECORE_THREAD_PIPE_DEL = ecore_event_type_new();
+   _ecore_thread_pipe = eina_array_new(8);
+
 #ifdef EFL_HAVE_THREADS
+   del_handler = ecore_event_handler_add(ECORE_THREAD_PIPE_DEL, _ecore_thread_pipe_del, NULL);
+
    LKI(_ecore_pending_job_threads_mutex);
    LRWKI(_ecore_thread_global_hash_lock);
    LKI(_ecore_thread_global_hash_mutex);
-   CDI(_ecore_thread_global_hash_cond, _ecore_thread_global_hash_mutex);
+   CDI(_ecore_thread_global_hash_cond);
 #endif
 }
 
@@ -694,6 +830,10 @@ void
 _ecore_thread_shutdown(void)
 {
    /* FIXME: If function are still running in the background, should we kill them ? */
+    Ecore_Pipe *p;
+    Eina_Array_Iterator it;
+    unsigned int i;
+
 #ifdef EFL_HAVE_THREADS
     Ecore_Pthread_Worker *work;
     Ecore_Pthread_Data *pth;
@@ -703,39 +843,64 @@ _ecore_thread_shutdown(void)
     EINA_LIST_FREE(_ecore_pending_job_threads, work)
       {
          if (work->func_cancel)
-           work->func_cancel((void *)work->data, (Ecore_Thread *) work);
+           work->func_cancel((void *)work->data, (Ecore_Thread *)work);
          free(work);
       }
 
     EINA_LIST_FREE(_ecore_pending_job_threads_feedback, work)
       {
          if (work->func_cancel)
-           work->func_cancel((void *)work->data, (Ecore_Thread *) work);
+           work->func_cancel((void *)work->data, (Ecore_Thread *)work);
          free(work);
       }
 
     LKU(_ecore_pending_job_threads_mutex);
 
-    /* FIXME: Improve emergency shutdown, now that we use async call, we can do something */
+    /* Improve emergency shutdown */
     EINA_LIST_FREE(_ecore_active_job_threads, pth)
       {
+         Ecore_Pipe *ep;
+
          PHA(pth->thread);
-         PHJ(pth->thread);
+         PHJ(pth->thread, ep);
+
+         ecore_pipe_del(pth->p);
       }
     if (_ecore_thread_global_hash)
       eina_hash_free(_ecore_thread_global_hash);
+    _ecore_event_handler_del(del_handler);
     have_main_loop_thread = 0;
-
-    while ((work = eina_trash_pop(&_ecore_thread_worker_trash)))
-      {
-         free(work);
-      }
+    del_handler = NULL;
 
     LKD(_ecore_pending_job_threads_mutex);
     LRWKD(_ecore_thread_global_hash_lock);
     LKD(_ecore_thread_global_hash_mutex);
     CDD(_ecore_thread_global_hash_cond);
 #endif
+
+    EINA_ARRAY_ITER_NEXT(_ecore_thread_pipe, i, p, it)
+    ecore_pipe_del(p);
+
+    eina_array_free(_ecore_thread_pipe);
+    _ecore_thread_pipe = NULL;
+}
+
+void
+_ecore_thread_assert_main_loop_thread(const char *function)
+{
+   Eina_Bool good;
+#ifdef EFL_HAVE_THREADS
+   good = PHE(get_main_loop_thread(), PHS());
+#else
+   good = EINA_TRUE;
+#endif
+   if (!good)
+     {
+        EINA_LOG_CRIT("Call to %s from wrong thread!", function);
+#if 0
+        abort();
+#endif
+     }
 }
 
 EAPI Ecore_Thread *
@@ -749,8 +914,6 @@ ecore_thread_run(Ecore_Thread_Cb func_blocking,
    Ecore_Pthread_Data *pth = NULL;
 #endif
 
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
-   
    if (!func_blocking) return NULL;
 
    work = _ecore_thread_worker_new();
@@ -766,15 +929,15 @@ ecore_thread_run(Ecore_Thread_Cb func_blocking,
    work->func_cancel = func_cancel;
    work->cancel = EINA_FALSE;
    work->feedback_run = EINA_FALSE;
-   work->message_run = EINA_FALSE;
    work->kill = EINA_FALSE;
    work->reschedule = EINA_FALSE;
-   work->no_queue = EINA_FALSE;
    work->data = data;
 
 #ifdef EFL_HAVE_THREADS
    work->self = 0;
    work->hash = NULL;
+   CDI(work->cond);
+   LKI(work->mutex);
 
    LKL(_ecore_pending_job_threads_mutex);
    _ecore_pending_job_threads = eina_list_append(_ecore_pending_job_threads, work);
@@ -791,8 +954,9 @@ ecore_thread_run(Ecore_Thread_Cb func_blocking,
    pth = malloc(sizeof (Ecore_Pthread_Data));
    if (!pth) goto on_error;
 
+   pth->p = _ecore_thread_pipe_get();
    pth->death_job = _ecore_thread_worker_new();
-   if (!pth->death_job) goto on_error;
+   if (!pth->p || !pth->death_job) goto on_error;
 
    eina_threads_init();
 
@@ -807,6 +971,7 @@ ecore_thread_run(Ecore_Thread_Cb func_blocking,
 on_error:
    if (pth)
      {
+        if (pth->p) eina_array_push(_ecore_thread_pipe, pth->p);
         if (pth->death_job) _ecore_thread_worker_free(pth->death_job);
         free(pth);
      }
@@ -818,11 +983,7 @@ on_error:
         LKU(_ecore_pending_job_threads_mutex);
 
         if (work->func_cancel)
-          work->func_cancel((void *) work->data, (Ecore_Thread *) work);
-
-        CDD(work->cond);
-        LKD(work->mutex);
-        LKD(work->cancel_mutex);
+          work->func_cancel((void *)work->data, (Ecore_Thread *)work);
         free(work);
         work = NULL;
      }
@@ -854,16 +1015,12 @@ EAPI Eina_Bool
 ecore_thread_cancel(Ecore_Thread *thread)
 {
 #ifdef EFL_HAVE_THREADS
-   Ecore_Pthread_Worker *volatile work = (Ecore_Pthread_Worker *)thread;
+   Ecore_Pthread_Worker *work = (Ecore_Pthread_Worker *)thread;
    Eina_List *l;
-   int cancel;
 
    if (!work)
      return EINA_TRUE;
-   LKL(work->cancel_mutex);
-   cancel = work->cancel;
-   LKU(work->cancel_mutex);
-   if (cancel)
+   if (work->cancel)
      return EINA_FALSE;
 
    if (work->feedback_run)
@@ -915,14 +1072,9 @@ ecore_thread_cancel(Ecore_Thread *thread)
 
    LKU(_ecore_pending_job_threads_mutex);
 
-   work = (Ecore_Pthread_Worker *)thread;
-
    /* Delay the destruction */
- on_exit:
-   LKL(work->cancel_mutex);
-   work->cancel = EINA_TRUE;
-   LKU(work->cancel_mutex);
-
+on_exit:
+   ((Ecore_Pthread_Worker *)thread)->cancel = EINA_TRUE;
    return EINA_FALSE;
 #else
    (void) thread;
@@ -933,23 +1085,10 @@ ecore_thread_cancel(Ecore_Thread *thread)
 EAPI Eina_Bool
 ecore_thread_check(Ecore_Thread *thread)
 {
-   Ecore_Pthread_Worker *volatile worker = (Ecore_Pthread_Worker *) thread;
-   int cancel;
+   Ecore_Pthread_Worker *worker = (Ecore_Pthread_Worker *)thread;
 
    if (!worker) return EINA_TRUE;
-#ifdef EFL_HAVE_THREADS
-   LKL(worker->cancel_mutex);
-#endif
-   cancel = worker->cancel;
-   /* FIXME: there is an insane bug driving me nuts here. I don't know if
-    it's a race condition, some cache issue or some alien attack on our software.
-    But ecore_thread_check will only work correctly with a printf, all the volatile,
-    lock and even usleep don't help here... */
-   /* fprintf(stderr, "wc: %i\n", cancel); */
-#ifdef EFL_HAVE_THREADS
-   LKU(worker->cancel_mutex);
-#endif
-   return cancel;
+   return worker->cancel;
 }
 
 EAPI Ecore_Thread *
@@ -964,8 +1103,6 @@ ecore_thread_feedback_run(Ecore_Thread_Cb        func_heavy,
    Ecore_Pthread_Worker *worker;
    Ecore_Pthread_Data *pth = NULL;
 
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
-   
    if (!func_heavy) return NULL;
 
    worker = _ecore_thread_worker_new();
@@ -974,11 +1111,12 @@ ecore_thread_feedback_run(Ecore_Thread_Cb        func_heavy,
    worker->u.feedback_run.func_heavy = func_heavy;
    worker->u.feedback_run.func_notify = func_notify;
    worker->hash = NULL;
+   CDI(worker->cond);
+   LKI(worker->mutex);
    worker->func_cancel = func_cancel;
    worker->func_end = func_end;
    worker->data = data;
    worker->cancel = EINA_FALSE;
-   worker->message_run = EINA_FALSE;
    worker->feedback_run = EINA_TRUE;
    worker->kill = EINA_FALSE;
    worker->reschedule = EINA_FALSE;
@@ -987,12 +1125,15 @@ ecore_thread_feedback_run(Ecore_Thread_Cb        func_heavy,
    worker->u.feedback_run.send = 0;
    worker->u.feedback_run.received = 0;
 
+   worker->u.feedback_run.notify = ecore_pipe_add(_ecore_notify_handler, worker);
+   worker->u.feedback_run.direct_pipe = NULL;
    worker->u.feedback_run.direct_worker = NULL;
 
-   if (try_no_queue)
+   if (!try_no_queue)
      {
         PH(t);
 
+        worker->u.feedback_run.direct_pipe = _ecore_thread_pipe_get();
         worker->u.feedback_run.direct_worker = _ecore_thread_worker_new();
         worker->no_queue = EINA_TRUE;
 
@@ -1001,12 +1142,6 @@ ecore_thread_feedback_run(Ecore_Thread_Cb        func_heavy,
         if (PHC(t, _ecore_direct_worker, worker) == 0)
           return (Ecore_Thread *)worker;
 
-        if (worker->u.feedback_run.direct_worker)
-          {
-             _ecore_thread_worker_free(worker->u.feedback_run.direct_worker);
-             worker->u.feedback_run.direct_worker = NULL;
-          }
-
         eina_threads_shutdown();
      }
 
@@ -1027,8 +1162,9 @@ ecore_thread_feedback_run(Ecore_Thread_Cb        func_heavy,
    pth = malloc(sizeof (Ecore_Pthread_Data));
    if (!pth) goto on_error;
 
+   pth->p = _ecore_thread_pipe_get();
    pth->death_job = _ecore_thread_worker_new();
-   if (!pth->death_job) goto on_error;
+   if (!pth->p || !pth->death_job) goto on_error;
 
    eina_threads_init();
 
@@ -1043,6 +1179,7 @@ ecore_thread_feedback_run(Ecore_Thread_Cb        func_heavy,
 on_error:
    if (pth)
      {
+        if (pth->p) eina_array_push(_ecore_thread_pipe, pth->p);
         if (pth->death_job) _ecore_thread_worker_free(pth->death_job);
         free(pth);
      }
@@ -1058,8 +1195,7 @@ on_error:
 
         if (worker)
           {
-             CDD(worker->cond);
-             LKD(worker->mutex);
+             ecore_pipe_del(worker->u.feedback_run.notify);
              free(worker);
              worker = NULL;
           }
@@ -1077,6 +1213,7 @@ on_error:
     */
    worker.u.feedback_run.func_heavy = func_heavy;
    worker.u.feedback_run.func_notify = func_notify;
+   worker.u.feedback_run.notify = NULL;
    worker.u.feedback_run.send = 0;
    worker.u.feedback_run.received = 0;
    worker.func_cancel = func_cancel;
@@ -1084,7 +1221,6 @@ on_error:
    worker.data = data;
    worker.cancel = EINA_FALSE;
    worker.feedback_run = EINA_TRUE;
-   worker.message_run = EINA_FALSE;
    worker.kill = EINA_FALSE;
 
    do {
@@ -1107,48 +1243,13 @@ ecore_thread_feedback(Ecore_Thread *thread,
    Ecore_Pthread_Worker *worker = (Ecore_Pthread_Worker *)thread;
 
    if (!worker) return EINA_FALSE;
+   if (!worker->feedback_run) return EINA_FALSE;
 
 #ifdef EFL_HAVE_THREADS
    if (!PHE(worker->self, PHS())) return EINA_FALSE;
 
-   if (worker->feedback_run)
-     {
-        Ecore_Pthread_Notify *notify;
-
-        notify = malloc(sizeof (Ecore_Pthread_Notify));
-        if (!notify) return EINA_FALSE;
-
-        notify->user_data = data;
-        notify->work = worker;
-        worker->u.feedback_run.send++;
-
-        ecore_main_loop_thread_safe_call_async(_ecore_notify_handler, notify);
-     }
-   else if (worker->message_run)
-     {
-        Ecore_Pthread_Message *msg;
-        Ecore_Pthread_Notify *notify;
-
-        msg = malloc(sizeof (Ecore_Pthread_Message*));
-        if (!msg) return EINA_FALSE;
-        msg->data = data;
-        msg->callback = EINA_FALSE;
-        msg->sync = EINA_FALSE;
-
-        notify = malloc(sizeof (Ecore_Pthread_Notify));
-        if (!notify)
-          {
-             free(msg);
-             return EINA_FALSE;
-          }
-        notify->work = worker;
-        notify->user_data = msg;
-
-        worker->u.message_run.from.send++;
-        ecore_main_loop_thread_safe_call_async(_ecore_message_notify_handler, notify);
-     }
-   else
-     return EINA_FALSE;
+   worker->u.feedback_run.send++;
+   ecore_pipe_write(worker->u.feedback_run.notify, &data, sizeof (void *));
 
    return EINA_TRUE;
 #else
@@ -1158,71 +1259,6 @@ ecore_thread_feedback(Ecore_Thread *thread,
 #endif
 }
 
-#if 0
-EAPI Ecore_Thread *
-ecore_thread_message_run(Ecore_Thread_Cb func_main,
-                        Ecore_Thread_Notify_Cb func_notify,
-                        Ecore_Thread_Cb func_end,
-                        Ecore_Thread_Cb func_cancel,
-                        const void *data)
-{
-#ifdef EFL_HAVE_THREADS
-  Ecore_Pthread_Worker *worker;
-  PH(t);
-
-  if (!func_main) return NULL;
-
-  worker = _ecore_thread_worker_new();
-  if (!worker) return NULL;
-
-  worker->u.message_run.func_main = func_main;
-  worker->u.message_run.func_notify = func_notify;
-  worker->u.message_run.direct_worker = _ecore_thread_worker_new();
-  worker->u.message_run.send = ecore_pipe_add(_ecore_nothing_handler, worker);
-  worker->u.message_run.from.send = 0;
-  worker->u.message_run.from.received = 0;
-  worker->u.message_run.to.send = 0;
-  worker->u.message_run.to.received = 0;
-
-  ecore_pipe_freeze(worker->u.message_run.send);
-
-  worker->func_cancel = func_cancel;
-  worker->func_end = func_end;
-  worker->hash = NULL;
-  worker->data = data;
-
-  worker->cancel = EINA_FALSE;
-  worker->message_run = EINA_TRUE;
-  worker->feedback_run = EINA_FALSE;
-  worker->kill = EINA_FALSE;
-  worker->reschedule = EINA_FALSE;
-  worker->no_queue = EINA_FALSE;
-  worker->self = 0;
-
-  eina_threads_init();
-
-  if (PHC(t, _ecore_direct_worker, worker) == 0)
-    return (Ecore_Thread*) worker;
-
-  eina_threads_shutdown();
-
-  if (worker->u.message_run.direct_worker) _ecore_thread_worker_free(worker->u.message_run.direct_worker);
-  if (worker->u.message_run.send) ecore_pipe_del(worker->u.message_run.send);
-
-  CDD(worker->cond);
-  LKD(worker->mutex);
-#else
-  /* Note: This type of thread can't and never will work without thread support */
-  WRN("ecore_thread_message_run called, but threads disable in Ecore, things will go wrong. Starting now !");
-# warning "You disabled threads support in ecore, I hope you know what you are doing !"
-#endif
-
-  func_cancel((void *) data, NULL);
-
-  return NULL;
-}
-#endif
-
 EAPI Eina_Bool
 ecore_thread_reschedule(Ecore_Thread *thread)
 {
@@ -1242,7 +1278,6 @@ EAPI int
 ecore_thread_active_get(void)
 {
 #ifdef EFL_HAVE_THREADS
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
    return _ecore_thread_count;
 #else
    return 0;
@@ -1255,7 +1290,6 @@ ecore_thread_pending_get(void)
 #ifdef EFL_HAVE_THREADS
    int ret;
 
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
    LKL(_ecore_pending_job_threads_mutex);
    ret = eina_list_count(_ecore_pending_job_threads);
    LKU(_ecore_pending_job_threads_mutex);
@@ -1271,7 +1305,6 @@ ecore_thread_pending_feedback_get(void)
 #ifdef EFL_HAVE_THREADS
    int ret;
 
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
    LKL(_ecore_pending_job_threads_mutex);
    ret = eina_list_count(_ecore_pending_job_threads_feedback);
    LKU(_ecore_pending_job_threads_mutex);
@@ -1287,7 +1320,6 @@ ecore_thread_pending_total_get(void)
 #ifdef EFL_HAVE_THREADS
    int ret;
 
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
    LKL(_ecore_pending_job_threads_mutex);
    ret = eina_list_count(_ecore_pending_job_threads) + eina_list_count(_ecore_pending_job_threads_feedback);
    LKU(_ecore_pending_job_threads_mutex);
@@ -1300,14 +1332,12 @@ ecore_thread_pending_total_get(void)
 EAPI int
 ecore_thread_max_get(void)
 {
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
    return _ecore_thread_count_max;
 }
 
 EAPI void
 ecore_thread_max_set(int num)
 {
-   EINA_MAIN_LOOP_CHECK_RETURN;
    if (num < 1) return;
    /* avoid doing something hilarious by blocking dumb users */
    if (num >= (2 * eina_cpu_count())) return;
@@ -1318,7 +1348,6 @@ ecore_thread_max_set(int num)
 EAPI void
 ecore_thread_max_reset(void)
 {
-   EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
    _ecore_thread_count_max = eina_cpu_count();
 }
 
@@ -1614,13 +1643,24 @@ ecore_thread_global_data_wait(const char *key,
 
    while (1)
      {
+#ifndef _WIN32
+        struct timespec t = { 0, 0 };
+
+        t.tv_sec = (long int)tm;
+        t.tv_nsec = (long int)((tm - (double)t.tv_sec) * 1000000000);
+#else
+        struct timeval t = { 0, 0 };
+
+        t.tv_sec = (long int)tm;
+        t.tv_usec = (long int)((tm - (double)t.tv_sec) * 1000000);
+#endif
         LRWKRL(_ecore_thread_global_hash_lock);
         ret = eina_hash_find(_ecore_thread_global_hash, key);
         LRWKU(_ecore_thread_global_hash_lock);
         if ((ret) || (!seconds) || ((seconds > 0) && (tm <= ecore_time_get())))
           break;
         LKL(_ecore_thread_global_hash_mutex);
-        CDW(_ecore_thread_global_hash_cond, tm);
+        CDW(_ecore_thread_global_hash_cond, _ecore_thread_global_hash_mutex, &t);
         LKU(_ecore_thread_global_hash_mutex);
      }
    if (ret) return ret->data;
index 05f0678..44c7bab 100644 (file)
@@ -248,6 +248,7 @@ ecore_con_url_new(const char *url)
     * FIXME: Check that these timeouts are sensible defaults
     * FIXME: Provide a means to change these timeouts
     */
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_FORBID_REUSE, 1);
    curl_easy_setopt(url_con->curl_easy, CURLOPT_CONNECTTIMEOUT, 30);
    curl_easy_setopt(url_con->curl_easy, CURLOPT_FOLLOWLOCATION, 1);
 
index 4c81db7..9067adf 100644 (file)
@@ -77,7 +77,10 @@ _ecore_evas_resize(Ecore_Evas *ee, int w, int h)
    einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas);
    if (einfo)
      {
-        einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
+        if (ee->alpha)
+          einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
+        else
+          einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_RGB32;
         einfo->info.dest_buffer = ee->engine.buffer.pixels;
         einfo->info.dest_buffer_row_bytes = stride;
         einfo->info.use_color_key = 0;
index b308a7c..779f3fc 100644 (file)
@@ -396,6 +396,7 @@ struct _Ecore_Evas
    unsigned char no_comp_sync  : 1;
    unsigned char semi_sync  : 1;
    unsigned char deleted : 1;
+   int           gl_sync_draw_done; // added by gl77.lee
 };
 
 void _ecore_evas_ref(Ecore_Evas *ee);
index 6dd13de..ef6a302 100644 (file)
@@ -102,6 +102,8 @@ _ecore_evas_x_protocols_set(Ecore_Evas *ee)
 static void
 _ecore_evas_x_sync_set(Ecore_Evas *ee)
 {
+   Ecore_X_Sync_Counter sync_counter = ee->engine.x.sync_counter;
+
    if (((ee->should_be_visible) || (ee->visible)) &&
        ((ecore_x_e_comp_sync_supported_get(ee->engine.x.win_root)) &&
            (!ee->no_comp_sync) && (_ecore_evas_app_comp_sync)))
@@ -112,10 +114,14 @@ _ecore_evas_x_sync_set(Ecore_Evas *ee)
    else
      {
         if (ee->engine.x.sync_counter)
-           ecore_x_sync_counter_free(ee->engine.x.sync_counter);
+          {
+             ecore_x_sync_counter_free(ee->engine.x.sync_counter);
+             ee->engine.x.sync_val = 0;
+          }
         ee->engine.x.sync_counter = 0;
      }
-   ecore_x_e_comp_sync_counter_set(ee->prop.window, ee->engine.x.sync_counter);
+   if (sync_counter != ee->engine.x.sync_counter)
+      ecore_x_e_comp_sync_counter_set(ee->prop.window, ee->engine.x.sync_counter);
 }
 
 static void
@@ -123,6 +129,7 @@ _ecore_evas_x_sync_clear(Ecore_Evas *ee)
 {
    if (!ee->engine.x.sync_counter) return;
    ecore_x_sync_counter_free(ee->engine.x.sync_counter);
+   ee->engine.x.sync_val = 0;
    ee->engine.x.sync_counter = 0;
 }
 
@@ -1129,6 +1136,17 @@ _ecore_evas_x_event_window_show(void *data __UNUSED__, int type __UNUSED__, void
    ee = ecore_event_window_match(e->win);
    if (!ee) return ECORE_CALLBACK_PASS_ON; /* pass on event */
    if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
+   /* some GL drivers are doing buffer copy in a separate thread.
+    * we need to check whether GL driver sends SYNC_DRAW_DONE msg afger copying
+    * that are required in order to exactly render. - added by gl77.lee
+    */
+   if (ee->gl_sync_draw_done < 0)
+     {
+        if (getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"))
+           ee->gl_sync_draw_done = atoi(getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"));
+        else
+           ee->gl_sync_draw_done = 0;
+     }
    if (first_map_bug < 0)
      {
         char *bug = NULL;
@@ -1685,14 +1703,41 @@ _ecore_evas_x_rotation_set_internal(Ecore_Evas *ee, int rotation, int resize,
      }
 }
 
+#define _USE_WIN_ROT_EFFECT 1
+
+#if _USE_WIN_ROT_EFFECT
+static void _ecore_evas_x_flush_pre(void *data, Evas *e __UNUSED__, void *event_info __UNUSED__);
+
+typedef struct _Ecore_Evas_X_Rotation_Effect Ecore_Evas_X_Rotation_Effect;
+struct _Ecore_Evas_X_Rotation_Effect
+{
+   Eina_Bool    wait_for_comp_reply;
+};
+
+static Ecore_Evas_X_Rotation_Effect _rot_effect =
+{
+   EINA_FALSE
+};
+
+static void
+_ecore_evas_x_rotation_effect_setup(void)
+{
+   _rot_effect.wait_for_comp_reply = EINA_TRUE;
+}
+#endif /* end of _USE_WIN_ROT_EFFECT */
+
 static void
 _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation, int resize)
 {
+   if (ee->rotation == rotation) return;
+   if (!strcmp(ee->driver, "xrender_x11")) return;
+
+#if _USE_WIN_ROT_EFFECT
    int angles[2];
    angles[0] = rotation;
    angles[1] = ee->rotation;
+#endif /* end of _USE_WIN_ROT_EFFECT */
 
-   if (ee->rotation == rotation) return;
    if (!strcmp(ee->driver, "opengl_x11"))
      {
 #ifdef BUILD_ECORE_EVAS_OPENGL_X11
@@ -1703,9 +1748,15 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation, int resize)
         einfo->info.rotation = rotation;
         _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
                                             (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
         ecore_x_window_prop_property_set(ee->prop.window,
                                          ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
                                          ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
+        ecore_x_window_prop_property_set(ee->prop.window,
+                                         ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+                                         ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
 #endif /* BUILD_ECORE_EVAS_OPENGL_X11 */
      }
    else if (!strcmp(ee->driver, "software_x11"))
@@ -1718,9 +1769,15 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation, int resize)
         einfo->info.rotation = rotation;
         _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
                                             (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
         ecore_x_window_prop_property_set(ee->prop.window,
                                          ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
                                          ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
+        ecore_x_window_prop_property_set(ee->prop.window,
+                                         ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+                                         ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
 #endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
      }
    else if (!strcmp(ee->driver,  "software_16_x11"))
@@ -1733,9 +1790,15 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation, int resize)
         einfo->info.rotation = rotation;
         _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
                                             (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
         ecore_x_window_prop_property_set(ee->prop.window,
                                          ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
                                          ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
+        ecore_x_window_prop_property_set(ee->prop.window,
+                                         ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+                                         ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
 #endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
      }
    else if (!strcmp(ee->driver,  "software_8_x11"))
@@ -1748,11 +1811,29 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation, int resize)
         einfo->info.rotation = rotation;
         _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
                                             (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
         ecore_x_window_prop_property_set(ee->prop.window,
                                          ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
                                          ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
+        ecore_x_window_prop_property_set(ee->prop.window,
+                                         ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+                                         ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
 #endif /* BUILD_ECORE_EVAS_SOFTWARE_8_X11 */
      }
+
+#if _USE_WIN_ROT_EFFECT
+   if ((ee->visible) &&
+       ((ecore_x_e_comp_sync_supported_get(ee->engine.x.win_root)) &&
+        (!ee->no_comp_sync) && (_ecore_evas_app_comp_sync)) &&
+        (ee->engine.x.sync_counter) &&
+        (ee->engine.x.sync_val > 0))
+     {
+        _ecore_evas_x_rotation_effect_setup();
+        _ecore_evas_x_flush_pre(ee, NULL, NULL);
+     }
+#endif /* end of _USE_WIN_ROT_EFFECT */
 }
 
 static void
@@ -2954,7 +3035,8 @@ _ecore_evas_x_flush_post(void *data, Evas *e __UNUSED__, void *event_info __UNUS
 {
    Ecore_Evas *ee = data;
 
-   if ((!ee->no_comp_sync) && (_ecore_evas_app_comp_sync))
+   if ((!ee->no_comp_sync) && (_ecore_evas_app_comp_sync) &&
+       (!ee->gl_sync_draw_done)) // added by gl77.lee
      {
         if (ee->engine.x.sync_counter)
           {
@@ -3315,14 +3397,20 @@ ecore_evas_gl_x11_options_new(const char *disp_name, Ecore_X_Window parent,
 
    ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
 
+   ee->gl_sync_draw_done = -1; // added by gl77.lee
+
    _ecore_evas_x_init();
 
    ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;
 
    ee->driver = "opengl_x11";
+#if 1
+   ee->semi_sync = 0; // gl engine doesn't need to sync - its whole swaps
+#else
    if (!getenv("ECORE_EVAS_COMP_NOSEMISYNC"))
       ee->semi_sync = 1; // gl engine doesn't need to sync - its whole swaps
 //   ee->no_comp_sync = 1; // gl engine doesn't need to sync - its whole swaps
+#endif
    if (disp_name) ee->name = strdup(disp_name);
 
    if (w < 1) w = 1;
index 9144d70..10813fe 100644 (file)
@@ -38,6 +38,35 @@ extern "C" {
  *
  * @{
  */
+/* ecore_imf_context_input_panel_event_callback_add() flag */
+typedef enum
+{
+   ECORE_IMF_INPUT_PANEL_STATE_EVENT,              /**< called when the state of the input panel is changed. */
+   ECORE_IMF_INPUT_PANEL_LANGUAGE_EVENT,           /**< called when the language of the input panel is changed. */
+   ECORE_IMF_INPUT_PANEL_SHIFT_MODE_EVENT,         /**< called when the shift key state of the input panel is changed */
+   ECORE_IMF_INPUT_PANEL_GEOMETRY_EVENT,           /**< called when the size of the input panel is changed. */
+   ECORE_IMF_CANDIDATE_PANEL_STATE_EVENT,          /**< called when the state of the candidate word panel is changed. */
+   ECORE_IMF_CANDIDATE_PANEL_GEOMETRY_EVENT        /**< called when the size of the candidate word panel is changed. */
+} Ecore_IMF_Input_Panel_Event;
+
+typedef enum
+{
+   ECORE_IMF_INPUT_PANEL_STATE_SHOW,        /**< Notification after the display of the input panel */
+   ECORE_IMF_INPUT_PANEL_STATE_HIDE,        /**< Notification prior to the dismissal of the input panel */
+   ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW    /**< Notification prior to the display of the input panel */
+} Ecore_IMF_Input_Panel_State;
+
+typedef enum
+{
+    ECORE_IMF_INPUT_PANEL_SHIFT_MODE_OFF,
+    ECORE_IMF_INPUT_PANEL_SHIFT_MODE_ON
+} Ecore_IMF_Input_Panel_Shift_Mode;
+
+typedef enum
+{
+   ECORE_IMF_CANDIDATE_PANEL_SHOW,        /**< Notification after the display of the candidate word panel */
+   ECORE_IMF_CANDIDATE_PANEL_HIDE         /**< Notification prior to the dismissal of the candidate word panel */
+} Ecore_IMF_Candidate_Panel_State;
 
 /* Events sent by the Input Method */
 typedef struct _Ecore_IMF_Event_Preedit_Start      Ecore_IMF_Event_Preedit_Start;
@@ -417,6 +446,12 @@ struct _Ecore_IMF_Context_Class
    void (*input_panel_return_key_type_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Return_Key_Type return_key_type);
    void (*input_panel_return_key_disabled_set) (Ecore_IMF_Context *ctx, Eina_Bool disabled);
    void (*input_panel_caps_lock_mode_set) (Ecore_IMF_Context *ctx, Eina_Bool mode);
+   void (*input_panel_geometry_get)(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
+   Ecore_IMF_Input_Panel_State (*input_panel_state_get) (Ecore_IMF_Context *ctx);
+   void (*input_panel_event_callback_add) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*func) (void *data, Ecore_IMF_Context *ctx, int value), void *data);
+   void (*input_panel_event_callback_del) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*func) (void *data, Ecore_IMF_Context *ctx, int value));
+   void (*input_panel_language_locale_get) (Ecore_IMF_Context *ctx, char **lang);
+   void (*candidate_panel_geometry_get)(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
 };
 
 struct _Ecore_IMF_Context_Info
@@ -502,6 +537,12 @@ EAPI void                          ecore_imf_context_input_panel_return_key_disa
 EAPI Eina_Bool                     ecore_imf_context_input_panel_return_key_disabled_get(Ecore_IMF_Context *ctx);
 EAPI void                          ecore_imf_context_input_panel_caps_lock_mode_set(Ecore_IMF_Context *ctx, Eina_Bool mode);
 EAPI Eina_Bool                     ecore_imf_context_input_panel_caps_lock_mode_get(Ecore_IMF_Context *ctx);
+EAPI void                          ecore_imf_context_input_panel_geometry_get(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
+EAPI Ecore_IMF_Input_Panel_State   ecore_imf_context_input_panel_state_get(Ecore_IMF_Context *ctx);
+EAPI void                          ecore_imf_context_input_panel_event_callback_add(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*func) (void *data, Ecore_IMF_Context *ctx, int value), const void *data);
+EAPI void                          ecore_imf_context_input_panel_event_callback_del(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*func) (void *data, Ecore_IMF_Context *ctx, int value));
+EAPI void                          ecore_imf_context_input_panel_language_locale_get(Ecore_IMF_Context *ctx, char **lang);
+EAPI void                          ecore_imf_context_candidate_panel_geometry_get(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
 
 /* The following entry points must be exported by each input method module
  */
index 44c52c0..94ec4de 100644 (file)
@@ -1733,3 +1733,159 @@ ecore_imf_context_input_panel_caps_lock_mode_get(Ecore_IMF_Context *ctx)
    return ctx->input_panel_caps_lock_mode;
 }
 
+/**
+ * Get the position of the current active input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param x top-left x co-ordinate of the input panel
+ * @param y top-left y co-ordinate of the input panel
+ * @param w width of the input panel
+ * @param h height of the input panel
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.2.0
+ */
+EAPI void
+ecore_imf_context_input_panel_geometry_get(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_geometry_get");
+        return;
+     }
+
+   if (ctx->klass->input_panel_geometry_get)
+     ctx->klass->input_panel_geometry_get(ctx, x, y, w, h);
+}
+
+/**
+ * Get state of current active input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param The state of input panel.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.2.0
+ */
+EAPI Ecore_IMF_Input_Panel_State
+ecore_imf_context_input_panel_state_get(Ecore_IMF_Context *ctx)
+{
+   Ecore_IMF_Input_Panel_State state = ECORE_IMF_INPUT_PANEL_STATE_HIDE;
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_state_get");
+        return ECORE_IMF_INPUT_PANEL_STATE_HIDE;
+     }
+
+   if (ctx->klass->input_panel_state_get)
+     state = ctx->klass->input_panel_state_get(ctx);
+
+   return state;
+}
+
+/**
+ * Register a callback function which will be called if there is change in input panel state,language,mode etc.
+ * In order to deregister the callback function 
+ * Use @ref ecore_imf_context_input_panel_event_callback_del.
+ *
+ * @param ctx An #Ecore_IMF_Context
+ * @param type event type
+ * @param func the callback function
+ * @param data application-input panel specific data.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.2.0
+ */
+EAPI void
+ecore_imf_context_input_panel_event_callback_add(Ecore_IMF_Context *ctx,
+                                                 Ecore_IMF_Input_Panel_Event type,
+                                                 void (*func) (void *data, Ecore_IMF_Context *ctx, int value),
+                                                 const void *data)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_event_callback_add");
+        return;
+     }
+
+   if (ctx->klass->input_panel_event_callback_add)
+     ctx->klass->input_panel_event_callback_add(ctx, type, func, (void *)data);
+}
+
+/**
+ * Unregister a callback function which will be called if there is change in input panel state, language, mode etc.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param func the callback function
+ * @param data application-input panel specific data.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.2.0
+ */
+EAPI void
+ecore_imf_context_input_panel_event_callback_del(Ecore_IMF_Context *ctx,
+                                                 Ecore_IMF_Input_Panel_Event type,
+                                                 void (*func) (void *data, Ecore_IMF_Context *ctx, int value))
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_event_callback_del");
+        return;
+     }
+
+   if (ctx->klass->input_panel_event_callback_del)
+     ctx->klass->input_panel_event_callback_del(ctx, type, func);
+}
+
+/**
+ * Get the current language locale of the input panel.
+ *
+ * ex) fr_FR
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param lang Location to store the retrieved language string. The
+ *             string retrieved must be freed with free().
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_input_panel_language_locale_get(Ecore_IMF_Context *ctx, char **lang)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_language_locale_get");
+        return;
+     }
+
+   if (ctx->klass->input_panel_language_locale_get)
+     ctx->klass->input_panel_language_locale_get(ctx, lang);
+   else
+     {
+        if (lang) *lang = strdup("");
+     }
+}
+
+/**
+ * Get the geometry information of the candidate panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param x top-left x co-ordinate of the candidate panel
+ * @param y top-left y co-ordinate of the candidate panel
+ * @param w width of the candidate panel
+ * @param h height of the candidate panel
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_candidate_panel_geometry_get(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_candidate_panel_geometry_get");
+        return;
+     }
+
+   if (ctx->klass->candidate_panel_geometry_get)
+     ctx->klass->candidate_panel_geometry_get(ctx, x, y, w, h);
+}
+
index b3a917a..be870e3 100644 (file)
@@ -844,6 +844,63 @@ struct _Ecore_X_Event_Window_Delete_Request
    Ecore_X_Time   time;
 };
 
+struct _Ecore_X_Event_Window_Prop_Title_Change
+{
+   Ecore_X_Window win;
+   char          *title;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Visible_Title_Change
+{
+   Ecore_X_Window win;
+   char          *title;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Icon_Name_Change
+{
+   Ecore_X_Window win;
+   char          *name;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change
+{
+   Ecore_X_Window win;
+   char          *name;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Client_Machine_Change
+{
+   Ecore_X_Window win;
+   char          *name;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Name_Class_Change
+{
+   Ecore_X_Window win;
+   char          *name;
+   char          *clas;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Pid_Change
+{
+   Ecore_X_Window win;
+   pid_t          pid;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Desktop_Change
+{
+   Ecore_X_Window win;
+   long           desktop;
+   Ecore_X_Time   time;
+};
+
 struct _Ecore_X_Event_Startup_Sequence
 {
    Ecore_X_Window win;
@@ -2425,6 +2482,25 @@ EAPI void
 EAPI void
  ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win);
 
+/* for sliding window */
+EAPI void
+ ecore_x_e_illume_sliding_win_state_set(Ecore_X_Window win,
+                                       unsigned int is_visible);
+EAPI int
+ ecore_x_e_illume_sliding_win_state_get(Ecore_X_Window win);
+EAPI void
+ ecore_x_e_illume_sliding_win_geometry_set(Ecore_X_Window win,
+                                          int x,
+                                          int y,
+                                          int w,
+                                          int h);
+EAPI int
+ ecore_x_e_illume_sliding_win_geometry_get(Ecore_X_Window win,
+                                          int *x,
+                                          int *y,
+                                          int *w,
+                                          int *h);
+
 EAPI void
 ecore_x_e_illume_clipboard_state_set(Ecore_X_Window win,
                                      Ecore_X_Illume_Clipboard_State state);
index 1341716..31bcf7b 100644 (file)
@@ -266,4 +266,11 @@ EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_PARENT;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_POSITION;
 
+/* for sliding window */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY;
+
+/* for SDB(Samsung Debug Bridge) */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_CONNECT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_DISCONNECT;
 #endif /* _ECORE_X_ATOMS_H */
index 8952df3..df410be 100644 (file)
@@ -293,3 +293,11 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP = 0;
 /* currently Emotion and E17 specific extension */
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_PARENT = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_POSITION = 0;
+
+/* for sliding window */
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY = 0;
+
+/* for SDB(Samsung Debug Bridge) */
+EAPI Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_CONNECT = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_SDB_SERVER_DISCONNECT = 0;
index 7a8bffa..d7ec3a5 100644 (file)
@@ -296,6 +296,16 @@ _ecore_x_atoms_init(void)
       { "_E_COMP_PIXMAP", &ECORE_X_ATOM_E_COMP_PIXMAP },
       { "_E_VIDEO_PARENT", &ECORE_X_ATOM_E_VIDEO_PARENT },
       { "_E_VIDEO_POSITION", &ECORE_X_ATOM_E_VIDEO_POSITION }
+
+      /* SLP additions after the comma */ ,
+
+      /* for sliding window */
+      { "_E_ILLUME_SLIDING_WIN_STATE", &ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE },
+      { "_E_ILLUME_SLIDING_WIN_GEOMETRY", &ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY },
+
+      /* for SDB(Samsung Debug Bridge) */
+      { "_SDB_SERVER_CONNECT", &ECORE_X_ATOM_SDB_SERVER_CONNECT },
+      { "_SDB_SERVER_DISCONNECT", &ECORE_X_ATOM_SDB_SERVER_DISCONNECT }
    };
    Atom *atoms;
    char **names;
index 4bd5218..64ab929 100644 (file)
@@ -861,6 +861,83 @@ ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win,
    return EINA_TRUE;
 }
 
+/* for sliding window */
+EAPI void 
+ecore_x_e_illume_sliding_win_state_set(Ecore_X_Window win,
+                                       unsigned int   is_visible)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   ecore_x_window_prop_card32_set(win, 
+                                  ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE, 
+                                  &is_visible, 1);
+} /* ecore_x_e_illume_sliding_win_state_set */
+
+EAPI int 
+ecore_x_e_illume_sliding_win_state_get(Ecore_X_Window win)
+{
+   unsigned int is_visible = 0;
+   
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   if (!ecore_x_window_prop_card32_get(win,
+                                       ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE, 
+                                       &is_visible, 1))
+      return 0;
+
+   return is_visible;
+}
+
+EAPI void
+ecore_x_e_illume_sliding_win_geometry_set(Ecore_X_Window win,
+                                          int            x,
+                                          int            y,
+                                          int            w,
+                                          int            h)
+{
+   unsigned int geom[4];
+
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   geom[0] = x;
+   geom[1] = y;
+   geom[2] = w;
+   geom[3] = h;
+   ecore_x_window_prop_card32_set(win,
+                                  ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY, 
+                                  geom, 4);
+} /* ecore_x_e_illume_sliding_win_geometry_set */
+
+EAPI int 
+ecore_x_e_illume_sliding_win_geometry_get(Ecore_X_Window win,
+                                          int           *x,
+                                          int           *y,
+                                          int           *w,
+                                          int           *h)
+{
+   int ret = 0;
+   unsigned int geom[4];
+   
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   ret = 
+     ecore_x_window_prop_card32_get(win, 
+                                    ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY, 
+                                    geom, 4);
+   if (ret != 4)
+      return 0;
+   
+   if (x)
+      *x = geom[0];
+   
+   if (y)
+      *y = geom[1];
+   
+   if (w)
+      *w = geom[2];
+   
+   if (h)
+      *h = geom[3];
+   
+   return 1;
+}/* ecore_x_e_illume_sliding_win_geometry_get */
+
 EAPI void
 ecore_x_e_comp_sync_counter_set(Ecore_X_Window win,
                                 Ecore_X_Sync_Counter counter)