[Upstream migration @62307] Merge remote branch 'origin/upstream'
authorMike McCormack <mj.mccormack@samsung.com>
Thu, 11 Aug 2011 07:59:06 +0000 (16:59 +0900)
committerMike McCormack <mj.mccormack@samsung.com>
Thu, 11 Aug 2011 07:59:06 +0000 (16:59 +0900)
Conflicts:
.gitignore

76 files changed:
.gitignore
debian/SVN_REV [new file with mode: 0644]
debian/_original/changelog [new file with mode: 0644]
debian/_original/compat [new file with mode: 0644]
debian/_original/control [new file with mode: 0644]
debian/_original/copyright [new file with mode: 0644]
debian/_original/ecore_config.1 [new file with mode: 0644]
debian/_original/libecore-bin.install [new file with mode: 0644]
debian/_original/libecore-dev.install [new file with mode: 0644]
debian/_original/libecore-doc.doc-base [new file with mode: 0644]
debian/_original/rules [new file with mode: 0755]
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
examples/client_bench.c [new file with mode: 0644]
examples/ecore_con_client_example.c [new file with mode: 0644]
examples/ecore_con_server_example.c [new file with mode: 0644]
examples/ecore_fd_handler_example.c [new file with mode: 0644]
examples/ecore_file_download_example.c [new file with mode: 0644]
examples/server_bench.c [new file with mode: 0644]
m4/efl_pthread.m4 [new file with mode: 0644]
packaging/ecore.spec [new file with mode: 0644]
po/sl.po
src/lib/ecore/ecore_thread.c
src/lib/ecore_evas/ecore_evas_cocoa.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_private.h [changed mode: 0644->0755]
src/lib/ecore_evas/ecore_evas_x.c [changed mode: 0644->0755]
src/lib/ecore_imf/Ecore_IMF.h
src/lib/ecore_imf/Ecore_IMF_Input_Panel_Key.h [new file with mode: 0644]
src/lib/ecore_imf/Makefile.am
src/lib/ecore_imf/ecore_imf_context.c
src/lib/ecore_imf/ecore_imf_private.h
src/lib/ecore_x/Ecore_X.h [changed mode: 0644->0755]
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
src/lib/ecore_x/xlib/ecore_x_window_shape.c [changed mode: 0644->0755]

index 8c225d5..72b0619 100644 (file)
@@ -82,3 +82,29 @@ Makefile.in
 /src/bin/ecore_test
 /src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
 /src/util/makekeys
+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/
diff --git a/debian/SVN_REV b/debian/SVN_REV
new file mode 100644 (file)
index 0000000..eee674c
--- /dev/null
@@ -0,0 +1,2 @@
+Revision 51480
+Last Changed Rev 51475
diff --git a/debian/_original/changelog b/debian/_original/changelog
new file mode 100644 (file)
index 0000000..659787f
--- /dev/null
@@ -0,0 +1,11 @@
+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/_original/compat b/debian/_original/compat
new file mode 100644 (file)
index 0000000..1e8b314
--- /dev/null
@@ -0,0 +1 @@
+6
diff --git a/debian/_original/control b/debian/_original/control
new file mode 100644 (file)
index 0000000..2f0169f
--- /dev/null
@@ -0,0 +1,206 @@
+Source: ecore
+Section: libs
+Priority: optional
+Maintainer:  Debian Pkg-e Team <pkg-e-devel@lists.alioth.debian.org>
+Uploaders: Albin Tonnerre <albin.tonnerre@gmail.com>, Niv Sardi <xaiki@debian.org>,
+ Xavier Oswald <x.oswald@free.fr>, Jan Lübbe <jluebbe@debian.org>
+Build-Depends: dpkg-dev (>= 1.14.8), debhelper (>= 6), cdbs, libeina-dev (>= 0.0.2.060+svnYYYYMMDD),
+ libeet-dev (>= 1.0.0), libevas-dev (>= 0.9.9.060+svnYYYYMMDD), libgnutls-dev,
+ libcurl4-gnutls-dev, libxcursor-dev, libxss-dev, libxrender-dev, libxinerama-dev,
+ libxrandr-dev, libxext-dev, libxp-dev, libxcomposite-dev, libjpeg62-dev,
+ libxdamage-dev, x11proto-xext-dev, libxtst-dev, doxygen, pkg-config, libtool
+Standards-Version: 3.8.1
+Homepage: http://enlightenment.org
+
+Package: libecore-svn-01
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+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-svn-01
+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-svn-01
+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-svn-01
+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-svn-01
+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-svn-01
+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-svn-01
+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-svn-01
+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-svn-01
+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-x-svn-01
+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-svn-01 (= ${binary:Version}),
+         libecore-con-svn-01 (= ${binary:Version}),
+         libecore-config-svn-01 (= ${binary:Version}),
+         libecore-evas-svn-01 (= ${binary:Version}),
+         libecore-fb-svn-01 (= ${binary:Version}),
+         libecore-file-svn-01 (= ${binary:Version}),
+         libecore-imf-svn-01 (= ${binary:Version}),
+         libecore-input-svn-01 (= ${binary:Version}),
+         libecore-ipc-svn-01 (= ${binary:Version}),
+         libecore-x-svn-01 (= ${binary:Version}),
+         libeet-dev, libevas-dev (>= 0.9.9.060), libeina-dev, pkg-config,
+         libgnutls-dev, libcurl4-gnutls-dev, libxcursor-dev, libxss-dev,
+         libxrender-dev, libxinerama-dev, libxrandr-dev, libxext-dev,
+         libxp-dev, libxcomposite-dev, libxdamage-dev, x11proto-xext-dev, libxtst-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: all
+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-svn-01 (= ${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/_original/copyright b/debian/_original/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/_original/ecore_config.1 b/debian/_original/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/_original/libecore-bin.install b/debian/_original/libecore-bin.install
new file mode 100644 (file)
index 0000000..088dd41
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/bin/ecore_config
diff --git a/debian/_original/libecore-dev.install b/debian/_original/libecore-dev.install
new file mode 100644 (file)
index 0000000..279e512
--- /dev/null
@@ -0,0 +1,14 @@
+debian/tmp/usr/include/Ecore*.h
+debian/tmp/usr/lib/libecore*.a
+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_fb.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/_original/libecore-doc.doc-base b/debian/_original/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/_original/rules b/debian/_original/rules
new file mode 100755 (executable)
index 0000000..a9861f0
--- /dev/null
@@ -0,0 +1,30 @@
+#!/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 \
+       --disable-ecore-directfb \
+       --disable-ecore-evas-dfb \
+       --enable-ecore-evas-fb \
+       --disable-rpath \
+       --disable-openssl \
+       --enable-gnutls \
+       --enable-doc
+DEB_MAKE_CLEAN_TARGET := distclean
+CFLAGS += -fvisibility=hidden
+LDFLAGS += -fvisibility=hidden
+
+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
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..08dedcc
--- /dev/null
@@ -0,0 +1,851 @@
+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..97750d3
--- /dev/null
@@ -0,0 +1,212 @@
+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>, sehwan <sehwan@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>
+Original-Maintainer:  Debian Pkg-e Team <pkg-e-devel@lists.alioth.debian.org>
+Uploaders: Albin Tonnerre <albin.tonnerre@gmail.com>, Niv Sardi <xaiki@debian.org>
+ Xavier Oswald <x.oswald@free.fr>, Jan Lübbe <jluebbe@debian.org>
+Build-Depends: dpkg-dev, debhelper (>= 6), cdbs, libeina-dev (>= 0.0.2.060+svn20100304),
+ libeet-dev (>= 1.0.0), libevas-dev , libglib2.0-dev,
+ libxcursor-dev, libxrender-dev, libxinerama-dev,
+ libxrandr-dev, libxext-dev, libxcomposite-dev, libjpeg7-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}, ${shlibs: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}),
+         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..214d210
--- /dev/null
@@ -0,0 +1,40 @@
+#!/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 \
+       --enable-doc \
+       --enable-simple-x11 \
+       --enable-ecore-evas-opengl-x11 \
+       --disable-ecore-evas-xrender-x11 \
+       --enable-curl \
+       --disable-openssl \
+       --enable-glib-integration-always \
+       --disable-xim
+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 f542bf7..ffe1662 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/examples/client_bench.c b/examples/client_bench.c
new file mode 100644 (file)
index 0000000..93a0fb1
--- /dev/null
@@ -0,0 +1,77 @@
+#include <stdio.h>
+#include <Ecore.h>
+#include <Ecore_Con.h>
+
+/* Ecore_Con client example
+ * 2010 Mike Blumenkrantz
+ */
+
+#define NUM_CLIENTS 10000
+
+static Eina_Counter *counter;
+static int add = 0;
+static int del = 0;
+
+Eina_Bool
+_add(void *data, int type, Ecore_Con_Event_Server_Add *ev)
+{
+   ++add;
+   printf("Connection #%i!\n", add);
+   if (add == NUM_CLIENTS)
+     ecore_main_loop_quit();
+
+   return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool
+_del(void *data, int type, Ecore_Con_Event_Server_Add *ev)
+{
+   ++del;
+   printf("Connection lost! #%i!\n", del);
+
+   return ECORE_CALLBACK_RENEW;
+}
+
+static void
+_spawn(void *data)
+{
+   int x;
+   
+   for (x = 0; x < NUM_CLIENTS; x++)
+     {
+//        printf("Creating connection %i\n", x);
+        if (!ecore_con_server_connect(ECORE_CON_REMOTE_NODELAY, "127.0.0.1", 8080, NULL))
+          {
+             printf("CRITICAL ERROR!\n"
+                    "Could not create connection #%i!\n", x);
+             exit(1);
+          }
+     }
+     printf("***Job done***\n");
+}
+
+int main(void)
+{
+   double done;
+   eina_init();
+   ecore_init();
+   ecore_con_init();
+
+   eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_ERR);
+   eina_log_domain_level_set("eina", EINA_LOG_LEVEL_ERR);
+   counter = eina_counter_new("client");
+   eina_counter_start(counter);
+   done = ecore_time_get();
+
+   ecore_job_add(_spawn, NULL);
+
+/* set event handler for server connect */
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_del, NULL);
+
+/* start client */
+   ecore_main_loop_begin();
+   eina_counter_stop(counter, 1);
+   printf("\nTime elapsed for %i connections: %f seconds\n%s", NUM_CLIENTS, ecore_time_get() - done, eina_counter_dump(counter));
+   return 0;
+}
diff --git a/examples/ecore_con_client_example.c b/examples/ecore_con_client_example.c
new file mode 100644 (file)
index 0000000..2f656c7
--- /dev/null
@@ -0,0 +1,90 @@
+#include <stdio.h>
+#include <Ecore.h>
+#include <Ecore_Con.h>
+
+/* Ecore_Con client example
+ * 2010 Mike Blumenkrantz
+ */
+
+/* comment if not using gnutls */
+static void
+tls_log_func(int level, const char *str)
+{
+   fprintf(stderr, "|<%d>| %s", level, str);
+}
+
+Eina_Bool
+_add(void *data, int type, Ecore_Con_Event_Server_Add *ev)
+{
+   printf("Server with ip %s connected!\n", ecore_con_server_ip_get(ev->server));
+   ecore_con_server_send(ev->server, "hello!", 6);
+   ecore_con_server_flush(ev->server);
+
+   return ECORE_CALLBACK_RENEW;
+}
+
+
+Eina_Bool
+_del(void *data, int type, Ecore_Con_Event_Server_Del *ev)
+{
+   printf("Lost server with ip %s!\n", ecore_con_server_ip_get(ev->server));
+   ecore_main_loop_quit();
+   return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool
+_data(void *data, int type, Ecore_Con_Event_Server_Data *ev)
+{
+   char fmt[128];
+
+   snprintf(fmt, sizeof(fmt),
+            "Received %i bytes from server:\n"
+            ">>>>>\n"
+            "%%.%is\n"
+            ">>>>>\n",
+            ev->size, ev->size);
+
+   printf(fmt, ev->data);
+   return ECORE_CALLBACK_RENEW;
+}
+int main()
+{
+   Ecore_Con_Server *svr;
+   Eina_Iterator *it;
+   const char *ca;
+
+   eina_init();
+   ecore_init();
+   ecore_con_init();
+
+/* comment if not using gnutls */
+   gnutls_global_set_log_level(9);
+   gnutls_global_set_log_function(tls_log_func);
+
+   if (!(it = eina_file_ls("/etc/ssl/certs")))
+     exit(1);
+
+   if (!(svr = ecore_con_server_connect(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_MIXED, "www.verisign.com", 443, NULL)))
+     exit(1);
+
+   /* add all the CAs */
+   EINA_ITERATOR_FOREACH(it, ca)
+     {
+        if (!ecore_con_ssl_server_cafile_add(svr, ca))
+          printf("Could not load CA: %s!\n", ca);
+        eina_stringshare_del(ca);   
+     }
+
+   eina_iterator_free(it);
+   ecore_con_ssl_server_verify(svr);
+
+/* set event handler for server connect */
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
+/* set event handler for server disconnect */
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
+/* set event handler for receiving server data */
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
+
+/* start client */
+   ecore_main_loop_begin();
+}
diff --git a/examples/ecore_con_server_example.c b/examples/ecore_con_server_example.c
new file mode 100644 (file)
index 0000000..5423eb1
--- /dev/null
@@ -0,0 +1,81 @@
+#include <stdio.h>
+#include <Ecore.h>
+#include <Ecore_Con.h>
+
+/* Ecore_Con server example
+ * 2010 Mike Blumenkrantz
+ */
+
+/* comment if not using gnutls */
+static void
+tls_log_func(int level, const char *str)
+{
+   fprintf(stderr, "|<%d>| %s", level, str);
+}
+
+Eina_Bool
+_add(void *data, int type, Ecore_Con_Event_Client_Add *ev)
+{
+   printf("Client with ip %s connected!\n", ecore_con_client_ip_get(ev->client));
+   ecore_con_client_send(ev->client, "hello!", 6);
+//   ecore_con_client_flush(ev->client);
+   ecore_con_client_timeout_set(ev->client, 5);
+
+   return ECORE_CALLBACK_RENEW;
+}
+
+
+Eina_Bool
+_del(void *data, int type, Ecore_Con_Event_Client_Del *ev)
+{
+   printf("Lost client with ip %s!\n", ecore_con_client_ip_get(ev->client));
+   ecore_main_loop_quit();
+   return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool
+_data(void *data, int type, Ecore_Con_Event_Client_Data *ev)
+{
+   char fmt[128];
+
+   snprintf(fmt, sizeof(fmt),
+            "Received %i bytes from client:\n"
+            ">>>>>\n"
+            "%%.%is\n"
+            ">>>>>\n",
+            ev->size, ev->size);
+
+   printf(fmt, ev->data);
+   return ECORE_CALLBACK_RENEW;
+}
+int main()
+{
+   Ecore_Con_Server *svr;
+   eina_init();
+   ecore_init();
+   ecore_con_init();
+
+/* comment if not using gnutls */
+   gnutls_global_set_log_level(9);
+   gnutls_global_set_log_function(tls_log_func);
+
+
+/* to use a PEM certificate with TLS and SSL3, uncomment the lines below */
+   if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_TLS | ECORE_CON_USE_SSL3 | ECORE_CON_LOAD_CERT, "127.0.0.1", 8080, NULL)))
+
+/* to use simple tcp with ssl/tls, use this line */
+//   if (!ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_SSL3, "127.0.0.1", 8080, NULL))
+     exit(1);
+
+   ecore_con_ssl_server_cert_add(svr, "server.pem");
+   ecore_con_ssl_server_privkey_add(svr, "server.pem");
+/* set event handler for client connect */
+   ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
+/* set event handler for client disconnect */
+   ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
+/* set event handler for receiving client data */
+   ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
+
+/* start server */
+   ecore_main_loop_begin();
+}
diff --git a/examples/ecore_fd_handler_example.c b/examples/ecore_fd_handler_example.c
new file mode 100644 (file)
index 0000000..b67e04e
--- /dev/null
@@ -0,0 +1,195 @@
+#include <Ecore.h>
+#include <fcntl.h>
+#include <netinet/tcp.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include <unistd.h>
+#include <gnutls/gnutls.h>
+
+/* Ecore_Fd_Handler example
+ * 2010 Mike Blumenkrantz
+ * compile with gcc $(pkgconfig --cflags --libs gnutls ecore)
+ */
+
+
+#define print(...) fprintf(stderr, "line %i: ", __LINE__); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n")
+
+static int done = 0;
+
+static void
+tls_log_func (int level, const char *str)
+{
+  fprintf(stderr, "|<%d>| %s", level, str);
+}
+
+static const char*
+SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_description_t status)
+{
+   switch (status)
+     {
+      case GNUTLS_HANDSHAKE_HELLO_REQUEST:
+        return "Hello request";
+      case GNUTLS_HANDSHAKE_CLIENT_HELLO:
+        return "Client hello";
+      case GNUTLS_HANDSHAKE_SERVER_HELLO:
+        return "Server hello";
+      case GNUTLS_HANDSHAKE_CERTIFICATE_PKT:
+        return "Certificate packet";
+      case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE:
+        return "Server key exchange";
+      case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST:
+        return "Certificate request";
+      case GNUTLS_HANDSHAKE_SERVER_HELLO_DONE:
+        return "Server hello done";
+      case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY:
+        return "Certificate verify";
+      case GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE:
+        return "Client key exchange";
+      case GNUTLS_HANDSHAKE_FINISHED:
+        return "Finished";
+      case GNUTLS_HANDSHAKE_SUPPLEMENTAL:
+        return "Supplemental";
+     }
+   return NULL;
+}
+
+/* Connects to the peer and returns a socket
+ * descriptor.
+ */
+static int
+tcp_connect (void)
+{
+  const char *PORT = "443";
+  const char *SERVER = "69.58.181.89"; //verisign.com
+  int err, sd;
+  int flag = 1, curstate = 0;
+  struct sockaddr_in sa;
+
+  /* sets some fd options such as nonblock */
+  sd = socket (AF_INET, SOCK_STREAM, 0);
+  fcntl(sd, F_SETFL, O_NONBLOCK);
+  fcntl(sd, F_SETFD, FD_CLOEXEC);
+  setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (const void *)&curstate, sizeof(curstate));
+
+  setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int));
+
+  memset (&sa, '\0', sizeof (sa));
+  sa.sin_family = AF_INET;
+  sa.sin_port = htons (atoi (PORT));
+  inet_pton (AF_INET, SERVER, &sa.sin_addr);
+
+  /* connects to server
+   */
+  err = connect (sd, (struct sockaddr *) &sa, sizeof (sa));
+  if ((err < 0) && (errno != EINPROGRESS))
+    {
+      print("Connect error\n");
+      exit (1);
+    }
+
+  return sd;
+}
+
+/* closes the given socket descriptor.
+ */
+static void
+tcp_close (int sd)
+{
+  shutdown (sd, SHUT_RDWR);    /* no more receptions */
+  close (sd);
+}
+
+static Eina_Bool
+_process_data(gnutls_session_t client, Ecore_Fd_Handler *fd_handler)
+{
+   static int ret, lastret;
+   static unsigned int count = 0;
+   
+   if (!done)
+     {
+        lastret = ret;
+        ret = gnutls_handshake (client);
+        count++;
+        if (gnutls_record_get_direction(client))
+          ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_WRITE);
+        else
+          ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_READ);
+        /* avoid printing messages infinity times */
+        if (lastret != ret)
+          {
+             print("gnutls returned with: %s - %s", gnutls_strerror_name(ret), gnutls_strerror(ret));
+             if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED) || (ret == GNUTLS_E_FATAL_ALERT_RECEIVED))
+               print("Also received alert: %s", gnutls_alert_get_name(gnutls_alert_get(client)));
+             print("last out: %s", SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_get_last_out(client)));
+             print("last in: %s", SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_get_last_in(client)));
+          }
+
+        if (gnutls_error_is_fatal(ret))
+          {
+             print("yarrr this be an error!");
+             exit(1);
+          }
+        
+     }
+  if (ret == GNUTLS_E_SUCCESS)
+    {
+       done = 1;
+       print("Handshake successful in %u handshake calls!", count);
+       ecore_main_loop_quit();
+    }
+
+   return ECORE_CALLBACK_RENEW;
+}
+
+int
+main (void)
+{
+  /* credentials */
+  gnutls_anon_client_credentials_t c_anoncred;
+  gnutls_certificate_credentials_t c_certcred;
+  
+  gnutls_session_t client;
+  int sd;
+
+  /* General init. */
+  gnutls_global_init ();
+  ecore_init();
+  gnutls_global_set_log_function (tls_log_func);
+    gnutls_global_set_log_level (6);
+
+  /* Init client */
+  gnutls_anon_allocate_client_credentials (&c_anoncred);
+  gnutls_certificate_allocate_credentials (&c_certcred);
+  gnutls_init (&client, GNUTLS_CLIENT);
+  /* set very specific priorities */
+  gnutls_priority_set_direct(client, "NONE:%VERIFY_ALLOW_X509_V1_CA_CRT:+RSA:+DHE-RSA:+DHE-DSS:+ANON-DH:+COMP-DEFLATE:+COMP-NULL:+CTYPE-X509:+SHA1:+SHA256:+SHA384:+SHA512:+AES-256-CBC:+AES-128-CBC:+3DES-CBC:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0", NULL);
+  gnutls_credentials_set (client, GNUTLS_CRD_ANON, c_anoncred);
+  gnutls_credentials_set (client, GNUTLS_CRD_CERTIFICATE, c_certcred);
+  gnutls_server_name_set(client, GNUTLS_NAME_DNS, "www.verisign.com", strlen("www.verisign.com"));
+
+
+  /* connect to the peer
+   */
+  sd = tcp_connect ();
+
+  /* associate gnutls with socket */
+  gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t) sd);
+  /* add a callback for data being available for send/receive on socket */
+  if (!ecore_main_fd_handler_add(sd, ECORE_FD_READ | ECORE_FD_WRITE, (Ecore_Fd_Cb)_process_data, client, NULL, NULL))
+    {
+       print("could not create fd handler!");
+       exit(1);
+    }
+  /* begin main loop */
+  ecore_main_loop_begin();
+
+  gnutls_bye (client, GNUTLS_SHUT_RDWR);
+
+  gnutls_deinit (client);
+
+  tcp_close (sd);
+  
+  return 0;
+}
diff --git a/examples/ecore_file_download_example.c b/examples/ecore_file_download_example.c
new file mode 100644 (file)
index 0000000..c03940b
--- /dev/null
@@ -0,0 +1,86 @@
+#include <stdio.h>
+#include <Eina.h>
+#include <Ecore.h>
+#include <Ecore_File.h>
+
+/* 
+ * ecore_file_download() example
+ *
+ * compile with:
+ * gcc ecore_file_download_example.c `pkg-config --libs --cflags ecore-file` \
+ *     -o ecore_file_download_example
+ *
+ */
+
+#define URL "http://www.kernel.org/pub/linux/kernel/v1.0/linux-1.0.tar.gz"
+#define DST "linux-1.0.tar.gz"
+#define DST_MIME "[x-gzip]linux-1.0.tar.gz"
+
+
+void
+completion_cb(void *data, const char *file, int status)
+{
+   printf("Done (status: %d)\n", status);
+   ecore_main_loop_quit();
+}
+
+int
+progress_cb(void *data, const char *file,
+            long int dltotal, long int dlnow,
+            long int ultotal, long int ulnow)
+{
+   printf("Progress: %ld/%ld\n", dlnow, dltotal);
+   return ECORE_FILE_PROGRESS_CONTINUE; //  continue the download
+}
+
+
+int main(void)
+{
+   double start;
+   Eina_Hash *headers;
+
+   eina_init();
+   ecore_init();
+   ecore_file_init();
+
+   if (ecore_file_exists(DST))
+     ecore_file_unlink(DST);
+
+   start = ecore_time_get();
+
+   if (ecore_file_download(URL, DST, completion_cb, progress_cb, NULL, NULL))
+     {
+        printf("Download started successfully:\n  URL: %s\n  DEST: %s\n", URL, DST);
+        ecore_main_loop_begin();
+        printf("\nTime elapsed: %f seconds\n", ecore_time_get() - start);
+        printf("Downloaded %lld bytes\n", ecore_file_size(DST));
+     }
+   else
+     {
+        printf("Error, can't start download\n");
+        goto done;
+     }
+
+   headers = eina_hash_string_small_new(NULL);
+   eina_hash_add(headers, "Content-type", "application/x-gzip");
+
+   if (ecore_file_download_full(URL, DST_MIME, completion_cb, progress_cb, NULL, NULL, headers))
+     {
+        printf("Download started successfully:\n  URL: %s\n  DEST: %s\n", URL, DST_MIME);
+        ecore_main_loop_begin();
+        printf("\nTime elapsed: %f seconds\n", ecore_time_get() - start);
+        printf("Downloaded %lld bytes\n", ecore_file_size(DST));
+     }
+   else
+     {
+        printf("Error, can't start download\n");
+        goto done; 
+     }
+
+done:
+   if (headers) eina_hash_free(headers);
+   ecore_file_shutdown();
+   ecore_shutdown();
+   eina_shutdown();
+   return 0;
+}
diff --git a/examples/server_bench.c b/examples/server_bench.c
new file mode 100644 (file)
index 0000000..db0020c
--- /dev/null
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <Ecore.h>
+#include <Ecore_Con.h>
+
+/* Ecore_Con server example
+ * 2010 Mike Blumenkrantz
+ */
+
+static Ecore_Con_Server *svr;
+static int add;
+static int del;
+
+Eina_Bool
+_add(void *data, int type, Ecore_Con_Event_Client_Add *ev)
+{
+   ++add;
+//   printf ("%s ", ecore_con_client_ip_get(ev->client));
+   printf("Client #%i!\n", add);
+   return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool
+_del(void *data, int type, Ecore_Con_Event_Client_Del *ev)
+{
+   ++del;
+   printf("Disconnected #%i!\n", del);
+   if (add == del)
+     ecore_main_loop_quit();
+   return ECORE_CALLBACK_RENEW;
+}
+
+int main(int argc, const char *argv[])
+{
+   ecore_init();
+   ecore_con_init();
+   ecore_app_args_set(argc, argv);
+   eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_ERR);
+   eina_log_domain_level_set("eina", EINA_LOG_LEVEL_ERR);
+
+
+/* to use a PEM certificate with TLS and SSL3, uncomment the lines below */
+//   if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_NODELAY | ECORE_CON_USE_MIXED | ECORE_CON_LOAD_CERT, "127.0.0.1", 8080, NULL)))
+
+/* to use simple tcp with ssl/tls, use this line */
+   svr = ecore_con_server_add(ECORE_CON_REMOTE_NODELAY , "127.0.0.1", 8080, NULL);
+   if (!svr)
+     exit(1);
+     
+   ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
+   ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
+
+/* start server */
+   ecore_main_loop_begin();
+   if (add && del)
+     {
+        printf("Restarting server after %i connections\n", add);
+        add = del = 0;
+        ecore_con_server_del(svr);
+        ecore_app_restart();
+     }
+   return 0;
+}
diff --git a/m4/efl_pthread.m4 b/m4/efl_pthread.m4
new file mode 100644 (file)
index 0000000..b90a045
--- /dev/null
@@ -0,0 +1,130 @@
+dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
+dnl That code is public domain and can be freely used or copied.
+
+dnl Macro that check if several pthread library is available or not.
+
+dnl Usage: EFL_CHECK_PTHREAD(want_pthread_spin[, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Call AC_SUBST(EFL_PTHREAD_CFLAGS)
+dnl Call AC_SUBST(EFL_PTHREAD_LIBS)
+dnl Define EFL_HAVE_PTHREAD
+dnl Define EFL_HAVE_PTHREAD_SPINLOCK
+
+AC_DEFUN([EFL_CHECK_PTHREAD],
+[
+
+dnl configure option
+
+AC_ARG_ENABLE([pthread],
+   [AC_HELP_STRING([--disable-pthread], [enable POSIX threads code @<:@default=auto@:>@])],
+   [
+    if test "x${enableval}" = "xyes" ; then
+       _efl_enable_pthread="yes"
+    else
+       _efl_enable_pthread="no"
+    fi
+   ],
+   [_efl_enable_pthread="auto"])
+
+AC_MSG_CHECKING([whether to build POSIX threads code])
+AC_MSG_RESULT([${_efl_enable_pthread}])
+
+dnl check if the compiler supports pthreads
+
+case "$host_os" in
+   mingw*)
+      _efl_pthread_cflags=""
+      _efl_pthread_libs="-lpthreadGC2"
+      ;;
+   solaris*)
+      _efl_pthread_cflags="-mt"
+      _efl_pthread_libs="-mt"
+      ;;
+   *)
+      _efl_pthread_cflags="-pthread"
+      _efl_pthread_libs="-pthread"
+      ;;
+esac
+
+_efl_have_pthread="no"
+
+if test "x${_efl_enable_pthread}" = "xyes" || test "x${_efl_enable_pthread}" = "xauto" ; then
+
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="${CFLAGS} ${_efl_pthread_cflags}"
+   SAVE_LIBS=${LIBS}
+   LIBS="${LIBS} ${_efl_pthread_libs}"
+   AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([[
+#include <pthread.h>
+                       ]],
+                       [[
+pthread_t id;
+id = pthread_self();
+                       ]])],
+      [_efl_have_pthread="yes"],
+      [_efl_have_pthread="no"])
+   CFLAGS=${SAVE_CFLAGS}
+   LIBS=${SAVE_LIBS}
+
+fi
+
+AC_MSG_CHECKING([whether system support POSIX threads])
+AC_MSG_RESULT([${_efl_have_pthread}])
+if test "$x{_efl_enable_pthread}" = "xyes" && test "x${_efl_have_pthread}" = "xno"; then
+   AC_MSG_ERROR([pthread support requested but not found.])
+fi
+
+EFL_PTHREAD_CFLAGS=""
+EFL_PTHREAD_LIBS=""
+if test "x${_efl_have_pthread}" = "xyes" ; then
+   EFL_PTHREAD_CFLAGS=${_efl_pthread_cflags}
+   EFL_PTHREAD_LIBS=${_efl_pthread_libs}
+fi
+
+AC_SUBST(EFL_PTHREAD_CFLAGS)
+AC_SUBST(EFL_PTHREAD_LIBS)
+
+if test "x${_efl_have_pthread}" = "xyes" ; then
+   AC_DEFINE(EFL_HAVE_PTHREAD, 1, [Define to mention that POSIX threads are supported])
+fi
+
+dnl check if the compiler supports pthreads spinlock
+
+_efl_have_pthread_spinlock="no"
+
+if test "x${_efl_have_pthread}" = "xyes" && test "x$1" = "xyes" ; then
+
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="${CFLAGS} ${EFL_PTHREAD_CFLAGS}"
+   SAVE_LIBS=${LIBS}
+   LIBS="${LIBS} ${EFL_PTHREAD_LIBS}"
+   AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([[
+#include <pthread.h>
+                       ]],
+                       [[
+pthread_spinlock_t lock;
+int res;
+res = pthread_spin_init(&lock, PTHREAD_PROCESS_PRIVATE);
+                       ]])],
+      [_efl_have_pthread_spinlock="yes"],
+      [_efl_have_pthread_spinlock="no"])
+   CFLAGS=${SAVE_CFLAGS}
+   LIBS=${SAVE_LIBS}
+
+fi
+
+AC_MSG_CHECKING([whether to build POSIX threads spinlock code])
+AC_MSG_RESULT([${_efl_have_pthread_spinlock}])
+if test "x${_efl_enable_pthread}" = "xyes" && test "x${_efl_have_pthread_spinlock}" = "xno" && test "x$1" = "xyes" ; then
+   AC_MSG_WARN([pthread support requested but spinlocks are not supported])
+fi
+
+if test "x${_efl_have_pthread_spinlock}" = "xyes" ; then
+   AC_DEFINE(EFL_HAVE_PTHREAD_SPINLOCK, 1, [Define to mention that POSIX threads spinlocks are supported])
+fi
+
+AS_IF([test "x$_efl_have_pthread" = "xyes"], [$2], [$3])
+AS_IF([test "x$_efl_have_pthread_spinlock" = "xyes"], [$4], [$5])
+
+])
diff --git a/packaging/ecore.spec b/packaging/ecore.spec
new file mode 100644 (file)
index 0000000..8a57c21
--- /dev/null
@@ -0,0 +1,300 @@
+# 
+# Do NOT Edit the Auto-generated Part!
+# Generated by: spectacle version 0.22
+# 
+
+Name:       ecore
+Summary:    Enlightened Core X interface library
+Version:    1.0.999.svn61874
+Release:    1
+Group:      TO_BE/FILLED_IN
+License:    TO BE FILLED IN
+URL:        http://www.enlightenment.org
+Source0:    http://download.enlightenment.org/releases/ecore-%{version}.tar.bz2
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+BuildRequires:  pkgconfig(eet)
+BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(pixman-1)
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(xext)
+BuildRequires:  pkgconfig(xcb)
+BuildRequires:  pkgconfig(xcb-composite)
+BuildRequires:  pkgconfig(xcb-damage)
+BuildRequires:  pkgconfig(xcb-dpms)
+BuildRequires:  pkgconfig(xcb-randr)
+BuildRequires:  pkgconfig(xcb-render)
+BuildRequires:  pkgconfig(xcb-screensaver)
+BuildRequires:  pkgconfig(xcb-shape)
+BuildRequires:  pkgconfig(xcb-sync)
+BuildRequires:  pkgconfig(xcb-xfixes)
+BuildRequires:  pkgconfig(xcb-xinerama)
+BuildRequires:  pkgconfig(xcb-xprint)
+BuildRequires:  pkgconfig(xcb-xtest)
+
+
+%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 bin
+Summary:    Enlightened Core X interface library (bin)
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+
+%description bin
+Core abstraction layer for enlightenment (bin)
+
+%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 -n %{name}
+
+
+%build
+
+%autogen
+%configure --disable-static \
+        --enable-glib-integration-always \
+        --disable-xim
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+
+#%find_lang ecore
+
+%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,-)
+/usr/bin/ecore_test
+%{_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 bin
+%defattr(-,root,root,-)
+
+%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 96eddd1..7c4735f 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -12,6 +12,7 @@ msgstr ""
 "PO-Revision-Date: 2011-02-24 16:54+0100\n"
 "Last-Translator: r1to <renato.rener@gmail.com>\n"
 "Language-Team: Slovenian <sl@li.org>\n"
+"Language: sl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 625b448..1d00b59 100644 (file)
@@ -870,7 +870,9 @@ _ecore_thread_assert_main_loop_thread(const char *function)
    if (!good)
      {
         EINA_LOG_CRIT("Call to %s from wrong thread!", function);
+#if 0
         abort();
+#endif
      }
 }
 
diff --git a/src/lib/ecore_evas/ecore_evas_cocoa.c b/src/lib/ecore_evas/ecore_evas_cocoa.c
new file mode 100644 (file)
index 0000000..e6fb541
--- /dev/null
@@ -0,0 +1,468 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef BUILD_ECORE_EVAS_COCOA
+#import <Cocoa/Cocoa.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "Ecore_Input.h"
+#include "Ecore_Input_Evas.h"
+
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+
+#ifdef BUILD_ECORE_EVAS_COCOA
+#include "Ecore_Cocoa.h"
+#include "Evas_Engine_Quartz.h"
+
+// FIXME: this engine has lots of problems. only 1 window at a time, drawRect looks wrong, doesn't handle resizes and more
+
+static int                      _ecore_evas_init_count = 0;
+static Ecore_Evas               *ecore_evases = NULL;
+static Ecore_Event_Handler      *ecore_evas_event_handlers[4] = {
+   NULL, NULL, NULL, NULL
+};
+static Ecore_Idle_Enterer       *ecore_evas_idle_enterer = NULL;
+static Ecore_Poller             *ecore_evas_event = NULL;
+
+static const char               *ecore_evas_cocoa_default = "EFL Cocoa";
+
+@interface EvasView : NSView
+{
+        CGContextRef ctx;
+}
+@end
+
+static EvasView * evas_view;
+static NSWindow * main_window;
+
+@implementation EvasView
+
+- (id) init
+{
+   self = [super init];
+   if (self != nil)
+   {
+      ctx = NULL;
+   }
+   return self;
+}
+
+- (void)drawRect:(NSRect)rect
+{
+   if(ctx != NULL)
+   {
+      Ecore_Evas  *ee;
+
+      EINA_INLIST_FOREACH(ecore_evases, ee)
+      {
+         if (ee->visible)
+            evas_damage_rectangle_add(ee->evas, 0, 0, 400, 400);
+      }
+      return;
+   }
+
+   ctx = [[NSGraphicsContext currentContext] graphicsPort];
+   CGContextRetain(ctx);
+}
+
+- (CGContextRef)context
+{
+   return ctx;
+}
+
+@end
+
+static Ecore_Evas *
+_ecore_evas_cocoa_match(void)
+{
+   return ecore_evases;
+}
+
+static Eina_Bool
+_ecore_evas_cocoa_event_got_focus(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                   *ee;
+
+   ee = _ecore_evas_cocoa_match();
+
+   if (!ee) return EINA_TRUE;
+   ee->prop.focused = 1;
+
+   return EINA_FALSE;
+}
+
+static Eina_Bool
+_ecore_evas_cocoa_event_lost_focus(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                   *ee;
+
+   ee = _ecore_evas_cocoa_match();
+
+   if (!ee) return EINA_TRUE;
+   ee->prop.focused = 0;
+
+   return EINA_FALSE;
+}
+
+static Eina_Bool
+_ecore_evas_cocoa_event_video_resize(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   /*Ecore_Cocoa_Event_Video_Resize *e;
+   Ecore_Evas                   *ee;
+
+   e = event;
+   ee = _ecore_evas_cocoa_match();
+
+   if (!ee) return 1; // pass on event
+   evas_output_size_set(ee->evas, e->w, e->h);
+
+   return 0;*/
+}
+
+static Eina_Bool
+_ecore_evas_cocoa_event_video_expose(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
+{
+   Ecore_Evas                   *ee;
+   int                          w;
+   int                          h;
+
+   ee = _ecore_evas_cocoa_match();
+
+   if (!ee) return EINA_TRUE;
+   evas_output_size_get(ee->evas, &w, &h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, w, h);
+
+   return EINA_FALSE;
+}
+
+static int
+_ecore_evas_idle_enter(void *data __UNUSED__)
+{
+   Ecore_Evas  *ee;
+   double       t1 = 0.;
+   double       t2 = 0.;
+
+   EINA_INLIST_FOREACH(ecore_evases, ee)
+   {
+      if (ee->visible)
+         evas_render(ee->evas);
+      else
+         evas_norender(ee->evas);
+   }
+
+   return 1;
+}
+
+static int
+_ecore_evas_cocoa_event(void *data)
+{
+   ecore_cocoa_feed_events();
+
+   return 1;
+}
+
+static int
+_ecore_evas_cocoa_init(int w, int h)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
+
+   ecore_event_evas_init();
+
+   ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
+   ecore_evas_event = ecore_poller_add(ECORE_POLLER_CORE, 1, ecore_evas_event, NULL);
+   ecore_poller_poll_interval_set(ECORE_POLLER_CORE, 0.006);
+
+   ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_COCOA_EVENT_GOT_FOCUS, _ecore_evas_cocoa_event_got_focus, NULL);
+   ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_COCOA_EVENT_LOST_FOCUS, _ecore_evas_cocoa_event_lost_focus, NULL);
+   ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_COCOA_EVENT_RESIZE, _ecore_evas_cocoa_event_video_resize, NULL);
+   ecore_evas_event_handlers[3] = ecore_event_handler_add(ECORE_COCOA_EVENT_EXPOSE, _ecore_evas_cocoa_event_video_expose, NULL);
+
+   return _ecore_evas_init_count;
+}
+
+static int
+_ecore_evas_cocoa_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+   {
+      int i;
+
+      while (ecore_evases) _ecore_evas_free(ecore_evases);
+
+      for (i = 0; i < sizeof (ecore_evas_event_handlers) / sizeof (Ecore_Event_Handler*); i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+      ecore_event_evas_shutdown();
+      ecore_idle_enterer_del(ecore_evas_idle_enterer);
+      ecore_evas_idle_enterer = NULL;
+      ecore_poller_del(ecore_evas_event);
+      ecore_evas_event = NULL;
+
+      ecore_event_evas_shutdown();
+   }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+
+static void
+_ecore_evas_cocoa_free(Ecore_Evas *ee)
+{
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
+   ecore_event_window_unregister(0);
+   _ecore_evas_cocoa_shutdown();
+   ecore_cocoa_shutdown();
+}
+
+static void
+_ecore_evas_resize(Ecore_Evas *ee, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+
+   evas_output_size_set(ee->evas, ee->w, ee->h);
+   evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);
+}
+
+static void
+_ecore_evas_move_resize(Ecore_Evas *ee, int x __UNUSED__, int y __UNUSED__, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+
+   evas_output_size_set(ee->evas, ee->w, ee->h);
+   evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);
+}
+
+static void
+_ecore_evas_object_cursor_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Ecore_Evas *ee;
+
+   ee = data;
+   if (ee)
+     ee->prop.cursor.object = NULL;
+}
+
+static void
+_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+   int x, y;
+
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (!obj)
+   {
+      ee->prop.cursor.object = NULL;
+      ee->prop.cursor.layer = 0;
+      ee->prop.cursor.hot.x = 0;
+      ee->prop.cursor.hot.y = 0;
+      return;
+   }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object,
+                    x - ee->prop.cursor.hot.x,
+                    y - ee->prop.cursor.hot.y);
+
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+
+   if (evas_pointer_inside_get(ee->evas))
+      evas_object_show(ee->prop.cursor.object);
+
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
+}
+
+static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func =
+{
+   _ecore_evas_cocoa_free,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   _ecore_evas_resize,
+   _ecore_evas_move_resize,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   _ecore_evas_object_cursor_set,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL, //transparent
+     
+     NULL // render
+};
+#endif
+
+EAPI Ecore_Evas *
+ecore_evas_cocoa_new(const char* name, int w, int h)
+{
+#ifdef BUILD_ECORE_EVAS_COCOA
+   Evas_Engine_Info_Quartz *einfo;
+   Ecore_Evas           *ee;
+   int                  rmethod;
+
+   if (!name)
+     name = ecore_evas_cocoa_default;
+
+   rmethod = evas_render_method_lookup("quartz");
+   if (!rmethod) return NULL;
+
+   if (!ecore_cocoa_init(name)) return NULL;
+
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee)
+     goto shutdown_ecore_cocoa;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_cocoa_init(w, h);
+
+   ecore_event_window_register(0, ee, ee->evas, 
+                               (Ecore_Event_Mouse_Move_Cb)_ecore_evas_mouse_move_process,
+                               (Ecore_Event_Multi_Move_Cb)_ecore_evas_mouse_multi_move_process,
+                               (Ecore_Event_Multi_Down_Cb)_ecore_evas_mouse_multi_down_process,
+                               (Ecore_Event_Multi_Up_Cb)_ecore_evas_mouse_multi_up_process);
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_cocoa_engine_func;
+
+   ee->driver = "quartz";
+   if (name) ee->name = strdup(name);
+   if (!ee->name)
+     goto free_ee;
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->visible = 1;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 0;
+   ee->prop.max.h = 0;
+   ee->prop.layer = 0;
+   ee->prop.focused = 1;
+   ee->prop.borderless = 1;
+   ee->prop.override = 1;
+   ee->prop.maximized = 1;
+   ee->prop.withdrawn = 0;
+   ee->prop.sticky = 0;
+
+   // init evas here
+   ee->evas = evas_new();
+   if (!ee->evas)
+     goto free_name;
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+
+   // Set up the Cocoa runtime
+   [[NSAutoreleasePool alloc] init];
+   [NSApplication sharedApplication];
+
+   // Register ourselves as a full-fledged Cocoa app, instead of a NSUIElement.
+   // This gives benefits like window focus and a dock icon!
+   ProcessSerialNumber psn = { 0, kCurrentProcess };
+   TransformProcessType (&psn, kProcessTransformToForegroundApplication);
+
+   [NSApp finishLaunching];
+
+   // Create our main window, and embed an EvasView in it
+   main_window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,w,h) styleMask:(NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask) backing:NSBackingStoreBuffered defer:NO screen:nil];
+   /* FIXME: manage the case where main_window is NULL with a goto free_evas; */
+   [main_window makeKeyAndOrderFront:NSApp];
+   [main_window setTitle:[NSString stringWithUTF8String:name]];
+   [main_window makeMainWindow];
+   [main_window setAcceptsMouseMovedEvents:YES];
+   [NSApp activateIgnoringOtherApps:YES];
+
+   evas_view = [[EvasView alloc] initWithFrame:NSMakeRect(0,0,w,h)];
+   [[main_window contentView] addSubview:evas_view];
+
+   // drawRect: must be run at least once, to make sure we've set ctx
+   [evas_view display];
+
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   einfo = (Evas_Engine_Info_Quartz*) evas_engine_info_get(ee->evas);
+   if (!einfo)
+     goto free_window;
+
+   einfo->info.context = [[evas_view context] retain];
+   if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
+     {
+        ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
+     }
+
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
+
+   evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+   evas_focus_in(ee->evas);
+
+   return ee;
+
+ free_window:
+   /* FIXME: free window here */
+ free_evas:
+   free(ee->evas);
+ free_name:
+   free(ee->name);
+ free_ee:
+   _ecore_evas_cocoa_shutdown();
+   free(ee);
+ shutdown_ecore_cocoa:
+   ecore_cocoa_shutdown();
+
+   return NULL;
+#else
+   ERR("OUTCH name='%s' size=%dx%d!", name ? name : "", w, h);
+   return NULL;
+#endif
+}
old mode 100644 (file)
new mode 100755 (executable)
index ae28ce2..d9027c9
@@ -347,9 +347,10 @@ struct _Ecore_Evas
 
    unsigned char ignore_events : 1;
    unsigned char manual_render : 1;
-   unsigned char registered : 1;
+   unsigned char registered    : 1;
    unsigned char no_comp_sync  : 1;
    unsigned char semi_sync  : 1;
+   int           gl_sync_draw_done; // added by gl77.lee
 };
 
 #ifdef BUILD_ECORE_EVAS_X11
old mode 100644 (file)
new mode 100755 (executable)
index 1869b76..a66caad
@@ -997,6 +997,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;
@@ -1533,10 +1544,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 (!strcmp(ee->driver, "opengl_x11"))
      {
 #ifdef BUILD_ECORE_EVAS_OPENGL_X11
@@ -1547,6 +1589,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"))
@@ -1559,6 +1610,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"))
@@ -1571,6 +1631,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"))
@@ -1583,8 +1652,22 @@ _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
+  _ecore_evas_x_rotation_effect_setup();
+  _ecore_evas_x_flush_pre(ee, NULL, NULL);
+#endif /* end of _USE_WIN_ROT_EFFECT */
 }
 
 static void
@@ -2759,7 +2842,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)
           {
@@ -3126,12 +3210,14 @@ 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";
-   ee->semi_sync = 1; // gl engine doesn't need to sync - its whole swaps
+   ee->semi_sync = 0; // 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
    if (disp_name) ee->name = strdup(disp_name);
 
index 21df2a0..c6c4811 100644 (file)
@@ -2,6 +2,7 @@
 #define _ECORE_IMF_H
 
 #include <Eina.h>
+#include <Ecore_IMF_Input_Panel_Key.h>
 
 #ifdef EAPI
 # undef EAPI
 # endif
 #endif /* ! _WIN32 */
 
+/* Faked 'bool'.  */
+#ifndef __cplusplus
+# ifndef bool
+#  define bool int
+#  ifndef FALSE
+#   define FALSE 0
+#  endif
+#  ifndef TRUE 
+#   define TRUE 1
+#  endif
+# endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* ecore_imf_context_input_panel_event_callback_add() flag */
+typedef enum
+{
+   ECORE_IMF_INPUT_PANEL_STATE_EVENT,              /**< Input Panel STATE Event */
+   ECORE_IMF_INPUT_PANEL_MODE_EVENT,               /**< Input Panel MODE Event */
+   ECORE_IMF_INPUT_PANEL_LANGUAGE_EVENT,           /**< Input Panel LANGUAGE Event */
+   ECORE_IMF_INPUT_PANEL_SHIFT_MODE_EVENT,         /**< Input Panel SHIFT MODE */
+   ECORE_IMF_INPUT_PANEL_PREEDIT_MODE_EVENT,       /**< Input Panel PREEDIT MODE */
+   ECORE_IMF_INPUT_PANEL_COMPLETION_MODE_EVENT,    /**< Input Panel COMPLETION MODE */
+   ECORE_IMF_INPUT_PANEL_CUSTOM_INPUT_MODE_EVENT,  /**< Input Panel CUSTOM INPUT MODE */
+
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_01,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_02,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_03,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_04,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_05,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_06,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_07,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_08,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_09,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_10,       /**< Input Panel PRIVATE CONTEXT */
+   ECORE_IMF_INPUT_PANEL_EVENT_INVALID
+} Ecore_IMF_Input_Panel_Event;
+
+typedef enum
+{
+   ECORE_IMF_INPUT_PANEL_STATE_SHOW,    /**< Show Input panel */
+   ECORE_IMF_INPUT_PANEL_STATE_HIDE,    /**< Hide Input panel */
+   ECORE_IMF_INPUT_PANEL_STATE_INVALID
+} Ecore_IMF_Input_Panel_State;
+
+typedef enum
+{
+   ECORE_IMF_KEYBOARD_LANG_NATIVE,  /**< Native */
+   ECORE_IMF_KEYBOARD_LANG_ALPHABET /**< Alphabet */
+} Ecore_IMF_Keyboard_Lang;
+
+typedef enum
+{
+   ECORE_IMF_AUTOCORRECTION_DEFAULT,
+   ECORE_IMF_AUTOCORRECTION_NO,
+   ECORE_IMF_AUTOCORRECTION_YES,
+   ECORE_IMF_AUTOCORRECTION_INVALID
+} Ecore_IMF_Autocorrection;
+
+typedef enum
+{
+   ECORE_IMF_INPUT_PANEL_CAPS_MODE_OFF,     /**< Off */
+   ECORE_IMF_INPUT_PANEL_CAPS_MODE_ON,      /**< On */
+   ECORE_IMF_INPUT_PANEL_CAPS_MODE_LOCK,    /**< Lock */
+} Ecore_IMF_Input_Panel_Caps_Mode;
+
+typedef enum
+{
+   ECORE_IMF_INPUT_PANEL_ORIENT_NONE,
+   ECORE_IMF_INPUT_PANEL_ORIENT_90_CW, /* Clockwise */
+   ECORE_IMF_INPUT_PANEL_ORIENT_180,
+   ECORE_IMF_INPUT_PANEL_ORIENT_90_CCW /* CounterClockwise */
+} Ecore_IMF_Input_Panel_Orient;
+
+typedef struct
+{
+   int layout_idx;
+   int key_idx;
+   Eina_Bool disabled;
+} Disable_Key_Item;
+
+typedef struct
+{
+   int layout_idx;
+   int key_idx;
+   int type;
+   char data[128]; // label or image path
+   int key_value;
+   char key_string[32];
+} Private_Key_Item;
+
 /* Events sent by the Input Method */
 typedef struct _Ecore_IMF_Event_Preedit_Start      Ecore_IMF_Event_Preedit_Start;
 typedef struct _Ecore_IMF_Event_Preedit_End        Ecore_IMF_Event_Preedit_End;
@@ -331,6 +422,33 @@ struct _Ecore_IMF_Context_Class
    void (*input_panel_language_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang);
    Ecore_IMF_Input_Panel_Lang (*input_panel_language_get) (Ecore_IMF_Context *ctx);
    void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w, int h);
+
+   void (*input_panel_imdata_set)         (Ecore_IMF_Context *ctx, const char* data, int len);
+   void (*input_panel_imdata_get)         (Ecore_IMF_Context *ctx, char* data, int *len);
+
+   void (*input_panel_use_effect_set)     (Ecore_IMF_Context *ctx, Eina_Bool use_effect);
+   void (*input_panel_orient_set)         (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Orient orientation);
+
+   void (*input_panel_move) (Ecore_IMF_Context *ctx, int x, int y);
+   void (*input_panel_geometry_get)       (Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
+   void (*input_panel_private_key_set)    (Ecore_IMF_Context *ctx, int layout_index, int key_index, const char *img_path, const char* label, const char* value);
+   void (*input_panel_key_disabled_set)   (Ecore_IMF_Context *ctx, int layout_index, int key_index, Eina_Bool disabled);
+
+   void (*input_panel_reset)              (Ecore_IMF_Context *ctx); /* Same as reset to default property*/
+   Ecore_IMF_Input_Panel_State (*input_panel_state_get) (Ecore_IMF_Context *ctx);
+
+   /* CallBack APIs  */
+   void (*input_panel_event_callback_add) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*pEventCallBackFunc) (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 (*pEventCallbackFunc) (void *data, Ecore_IMF_Context *ctx, int value));
+
+   /* ISF related APIs */
+   int (*ise_get_ise_language)       (Ecore_IMF_Context *ctx, const char* input_panel_name, char*** langlist);
+   int (*ise_set_isf_language)       (Ecore_IMF_Context *ctx, const char* lang);
+   int (*ise_get_active_isename)     (Ecore_IMF_Context *ctx, char* name);       /**< will be deprecated */
+   int (*ise_set_active_ise_by_name) (Ecore_IMF_Context *ctx, const char* name); /**< will be deprecated */
+   int (*ise_set_active_ise_by_uuid) (Ecore_IMF_Context *ctx, const char* uuid); /**< will be deprecated */
+   int (*ise_get_iselist)            (Ecore_IMF_Context *ctx, char*** iselist);  /**< will be deprecated */
+   void (*input_panel_caps_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Caps_Mode mode);
 };
 
 struct _Ecore_IMF_Context_Info
@@ -401,6 +519,34 @@ EAPI void                          ecore_imf_context_input_panel_language_set(Ec
 EAPI Ecore_IMF_Input_Panel_Lang    ecore_imf_context_input_panel_language_get(Ecore_IMF_Context *ctx);
 EAPI void                          ecore_imf_context_input_panel_enabled_set(Ecore_IMF_Context *ctx, Eina_Bool enable);
 EAPI Eina_Bool                     ecore_imf_context_input_panel_enabled_get(Ecore_IMF_Context *ctx);
+EAPI void                          ecore_imf_context_input_panel_imdata_set(Ecore_IMF_Context *ctx, const char *data, int len);
+EAPI void                          ecore_imf_context_input_panel_imdata_get(Ecore_IMF_Context *ctx, char *data, int *len);
+EAPI void                          ecore_imf_context_input_panel_use_effect_set(Ecore_IMF_Context *ctx, Eina_Bool use_effect);
+EAPI Eina_Bool                     ecore_imf_context_input_panel_use_effect_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 void                          ecore_imf_context_input_panel_private_key_set(Ecore_IMF_Context *ctx, int layout_index, int key_index, const char *img_path, const char* label, int key_value, const char* key_string);
+EAPI Eina_List                    *ecore_imf_context_input_panel_private_key_list_get(Ecore_IMF_Context *ctx);
+EAPI void                          ecore_imf_context_input_panel_reset(Ecore_IMF_Context *ctx);        /* Same as reset to default property*/
+EAPI void                          ecore_imf_context_input_panel_orient_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Orient  orientation);
+EAPI Ecore_IMF_Input_Panel_Orient  ecore_imf_context_input_panel_orient_get(Ecore_IMF_Context *ctx);
+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_key_disabled_set(Ecore_IMF_Context *ctx, int layout_index, int key_index, Eina_Bool disabled);
+EAPI Eina_List                    *ecore_imf_context_input_panel_key_disabled_list_get(Ecore_IMF_Context *ctx);
+EAPI void                          ecore_imf_context_input_panel_move(Ecore_IMF_Context *ctx, int x, int y);
+EAPI void                          ecore_imf_context_input_panel_caps_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Caps_Mode mode);
+
+EAPI void                          ecore_imf_context_keyboard_language_set(Ecore_IMF_Context *ctx, Ecore_IMF_Keyboard_Lang lang);
+EAPI Ecore_IMF_Keyboard_Lang       ecore_imf_context_keyboard_language_get(Ecore_IMF_Context *ctx);
+
+/* functions to control isf */
+EAPI int                           ecore_imf_context_ise_get_ise_language(Ecore_IMF_Context *ctx, const char* ise_name, char ***langlist);
+EAPI void                          ecore_imf_context_ise_set_isf_language(Ecore_IMF_Context *ctx, const char* lang);
+EAPI void                          ecore_imf_context_ise_get_active_isename(Ecore_IMF_Context *ctx, char* name);
+EAPI void                          ecore_imf_context_ise_set_active_ise_by_name(Ecore_IMF_Context *ctx, const char* name);
+EAPI void                          ecore_imf_context_ise_set_active_ise_by_uuid(Ecore_IMF_Context *ctx, const char* uuid);
+EAPI int                           ecore_imf_context_ise_get_iselist(Ecore_IMF_Context *ctx, char*** iselist);
 
 /* The following entry points must be exported by each input method module
  */
diff --git a/src/lib/ecore_imf/Ecore_IMF_Input_Panel_Key.h b/src/lib/ecore_imf/Ecore_IMF_Input_Panel_Key.h
new file mode 100644 (file)
index 0000000..24382a2
--- /dev/null
@@ -0,0 +1,151 @@
+#ifndef _INPUT_PANEL_KEYDEFS_H_
+#define _INPUT_PANEL_KETDEFS_H_
+
+
+#define ECORE_IMF_INPUT_PANEL_KEY_RESERVED     0
+#define ECORE_IMF_INPUT_PANEL_KEY_ESC                  1
+#define ECORE_IMF_INPUT_PANEL_KEY_1                    2
+#define ECORE_IMF_INPUT_PANEL_KEY_2                    3
+#define ECORE_IMF_INPUT_PANEL_KEY_3                    4
+#define ECORE_IMF_INPUT_PANEL_KEY_4                    5
+#define ECORE_IMF_INPUT_PANEL_KEY_5                    6
+#define ECORE_IMF_INPUT_PANEL_KEY_6                    7
+#define ECORE_IMF_INPUT_PANEL_KEY_7                    8
+#define ECORE_IMF_INPUT_PANEL_KEY_8                    9
+#define ECORE_IMF_INPUT_PANEL_KEY_9                    10
+#define ECORE_IMF_INPUT_PANEL_KEY_0                    11
+#define ECORE_IMF_INPUT_PANEL_KEY_MINUS                        12
+#define ECORE_IMF_INPUT_PANEL_KEY_EQUAL                        13
+#define ECORE_IMF_INPUT_PANEL_KEY_BACKSPACE            14
+#define ECORE_IMF_INPUT_PANEL_KEY_TAB                  15
+#define ECORE_IMF_INPUT_PANEL_KEY_Q                    16
+#define ECORE_IMF_INPUT_PANEL_KEY_W                    17
+#define ECORE_IMF_INPUT_PANEL_KEY_E                    18
+#define ECORE_IMF_INPUT_PANEL_KEY_R                    19
+#define ECORE_IMF_INPUT_PANEL_KEY_T                    20
+#define ECORE_IMF_INPUT_PANEL_KEY_Y                    21
+#define ECORE_IMF_INPUT_PANEL_KEY_U                    22
+#define ECORE_IMF_INPUT_PANEL_KEY_I                    23
+#define ECORE_IMF_INPUT_PANEL_KEY_O                    24
+#define ECORE_IMF_INPUT_PANEL_KEY_P                    25
+#define ECORE_IMF_INPUT_PANEL_KEY_LEFTBRACE            26
+#define ECORE_IMF_INPUT_PANEL_KEY_RIGHTBRACE           27
+#define ECORE_IMF_INPUT_PANEL_KEY_ENTER                        28
+#define ECORE_IMF_INPUT_PANEL_KEY_LEFTCTRL             29
+#define ECORE_IMF_INPUT_PANEL_KEY_A                    30
+#define ECORE_IMF_INPUT_PANEL_KEY_S                    31
+#define ECORE_IMF_INPUT_PANEL_KEY_D                    32
+#define ECORE_IMF_INPUT_PANEL_KEY_F                    33
+#define ECORE_IMF_INPUT_PANEL_KEY_G                    34
+#define ECORE_IMF_INPUT_PANEL_KEY_H                    35
+#define ECORE_IMF_INPUT_PANEL_KEY_J                    36
+#define ECORE_IMF_INPUT_PANEL_KEY_K                    37
+#define ECORE_IMF_INPUT_PANEL_KEY_L                    38
+#define ECORE_IMF_INPUT_PANEL_KEY_SEMICOLON            39
+#define ECORE_IMF_INPUT_PANEL_KEY_APOSTROPHE           40
+#define ECORE_IMF_INPUT_PANEL_KEY_GRAVE                        41
+#define ECORE_IMF_INPUT_PANEL_KEY_LEFTSHIFT            42
+#define ECORE_IMF_INPUT_PANEL_KEY_BACKSLASH            43
+#define ECORE_IMF_INPUT_PANEL_KEY_Z                    44
+#define ECORE_IMF_INPUT_PANEL_KEY_X                    45
+#define ECORE_IMF_INPUT_PANEL_KEY_C                    46
+#define ECORE_IMF_INPUT_PANEL_KEY_V                    47
+#define ECORE_IMF_INPUT_PANEL_KEY_B                    48
+#define ECORE_IMF_INPUT_PANEL_KEY_N                    49
+#define ECORE_IMF_INPUT_PANEL_KEY_M                    50
+#define ECORE_IMF_INPUT_PANEL_KEY_COMMA                        51
+#define ECORE_IMF_INPUT_PANEL_KEY_DOT                  52
+#define ECORE_IMF_INPUT_PANEL_KEY_SLASH                        53
+#define ECORE_IMF_INPUT_PANEL_KEY_RIGHTSHIFT           54
+#define ECORE_IMF_INPUT_PANEL_KEY_KPASTERISK           55
+#define ECORE_IMF_INPUT_PANEL_KEY_LEFTALT                      56
+#define ECORE_IMF_INPUT_PANEL_KEY_SPACE                        57
+#define ECORE_IMF_INPUT_PANEL_KEY_CAPSLOCK             58
+#define ECORE_IMF_INPUT_PANEL_KEY_F1                   59
+#define ECORE_IMF_INPUT_PANEL_KEY_F2                   60
+#define ECORE_IMF_INPUT_PANEL_KEY_F3                   61
+#define ECORE_IMF_INPUT_PANEL_KEY_F4                   62
+#define ECORE_IMF_INPUT_PANEL_KEY_F5                   63
+#define ECORE_IMF_INPUT_PANEL_KEY_F6                   64
+#define ECORE_IMF_INPUT_PANEL_KEY_F7                   65
+#define ECORE_IMF_INPUT_PANEL_KEY_F8                   66
+#define ECORE_IMF_INPUT_PANEL_KEY_F9                   67
+#define ECORE_IMF_INPUT_PANEL_KEY_F10                  68
+#define ECORE_IMF_INPUT_PANEL_KEY_NUMLOCK                      69
+#define ECORE_IMF_INPUT_PANEL_KEY_SCROLLLOCK           70
+#define ECORE_IMF_INPUT_PANEL_KEY_KP7                  71
+#define ECORE_IMF_INPUT_PANEL_KEY_KP8                  72
+#define ECORE_IMF_INPUT_PANEL_KEY_KP9                  73
+#define ECORE_IMF_INPUT_PANEL_KEY_KPMINUS                      74
+#define ECORE_IMF_INPUT_PANEL_KEY_KP4                  75
+#define ECORE_IMF_INPUT_PANEL_KEY_KP5                  76
+#define ECORE_IMF_INPUT_PANEL_KEY_KP6                  77
+#define ECORE_IMF_INPUT_PANEL_KEY_KPPLUS                       78
+#define ECORE_IMF_INPUT_PANEL_KEY_KP1                  79
+#define ECORE_IMF_INPUT_PANEL_KEY_KP2                  80
+#define ECORE_IMF_INPUT_PANEL_KEY_KP3                  81
+#define ECORE_IMF_INPUT_PANEL_KEY_KP0                  82
+#define ECORE_IMF_INPUT_PANEL_KEY_KPDOT                        83
+
+#define ECORE_IMF_INPUT_PANEL_KEY_ZENKAKUHANKAKU               85
+#define ECORE_IMF_INPUT_PANEL_KEY_102ND                        86
+#define ECORE_IMF_INPUT_PANEL_KEY_F11                  87
+#define ECORE_IMF_INPUT_PANEL_KEY_F12                  88
+#define ECORE_IMF_INPUT_PANEL_KEY_RO                   89
+#define ECORE_IMF_INPUT_PANEL_KEY_KATAKANA             90
+#define ECORE_IMF_INPUT_PANEL_KEY_HIRAGANA             91
+#define ECORE_IMF_INPUT_PANEL_KEY_HENKAN                       92
+#define ECORE_IMF_INPUT_PANEL_KEY_KATAKANAHIRAGANA     93
+#define ECORE_IMF_INPUT_PANEL_KEY_MUHENKAN             94
+#define ECORE_IMF_INPUT_PANEL_KEY_KPJPCOMMA            95
+#define ECORE_IMF_INPUT_PANEL_KEY_KPENTER                      96
+#define ECORE_IMF_INPUT_PANEL_KEY_RIGHTCTRL            97
+#define ECORE_IMF_INPUT_PANEL_KEY_KPSLASH                      98
+#define ECORE_IMF_INPUT_PANEL_KEY_SYSRQ                        99
+#define ECORE_IMF_INPUT_PANEL_KEY_RIGHTALT             100
+#define ECORE_IMF_INPUT_PANEL_KEY_LINEFEED             101
+#define ECORE_IMF_INPUT_PANEL_KEY_HOME                 102
+#define ECORE_IMF_INPUT_PANEL_KEY_UP                   103
+#define ECORE_IMF_INPUT_PANEL_KEY_PAGEUP                       104
+#define ECORE_IMF_INPUT_PANEL_KEY_LEFT                 105
+#define ECORE_IMF_INPUT_PANEL_KEY_RIGHT                        106
+#define ECORE_IMF_INPUT_PANEL_KEY_END                  107
+#define ECORE_IMF_INPUT_PANEL_KEY_DOWN                 108
+#define ECORE_IMF_INPUT_PANEL_KEY_PAGEDOWN             109
+#define ECORE_IMF_INPUT_PANEL_KEY_INSERT                       110
+#define ECORE_IMF_INPUT_PANEL_KEY_DELETE                       111
+#define ECORE_IMF_INPUT_PANEL_KEY_MACRO                        112
+#define ECORE_IMF_INPUT_PANEL_KEY_MUTE                 113
+#define ECORE_IMF_INPUT_PANEL_KEY_VOLUMEDOWN           114
+#define ECORE_IMF_INPUT_PANEL_KEY_VOLUMEUP             115
+#define ECORE_IMF_INPUT_PANEL_KEY_POWER                        116     /* SC System Power Down */
+#define ECORE_IMF_INPUT_PANEL_KEY_KPEQUAL                      117
+#define ECORE_IMF_INPUT_PANEL_KEY_KPPLUSMINUS          118
+#define ECORE_IMF_INPUT_PANEL_KEY_PAUSE                        119
+
+#define ECORE_IMF_INPUT_PANEL_KEY_KPCOMMA                      121
+#define ECORE_IMF_INPUT_PANEL_KEY_HANGEUL                      122
+#define ECORE_IMF_INPUT_PANEL_KEY_HANGUEL                      ECORE_IMF_INPUT_PANEL_KEY_KEY_HANGEUL
+#define ECORE_IMF_INPUT_PANEL_KEY_HANJA                        123
+#define ECORE_IMF_INPUT_PANEL_KEY_YEN                  124
+#define ECORE_IMF_INPUT_PANEL_KEY_LEFTMETA             125
+#define ECORE_IMF_INPUT_PANEL_KEY_RIGHTMETA            126
+#define ECORE_IMF_INPUT_PANEL_KEY_COMPOSE                      127
+
+#define ECORE_IMF_INPUT_PANEL_KEY_EXCLAM                       129
+#define ECORE_IMF_INPUT_PANEL_KEY_AT                   130
+#define ECORE_IMF_INPUT_PANEL_KEY_SHARP                        131
+#define ECORE_IMF_INPUT_PANEL_KEY_DOLLAR                       132
+#define ECORE_IMF_INPUT_PANEL_KEY_PERCENT                      133
+#define ECORE_IMF_INPUT_PANEL_KEY_CARET                        134
+#define ECORE_IMF_INPUT_PANEL_KEY_AMPERSAND            135
+#define ECORE_IMF_INPUT_PANEL_KEY_ASTERISK             136
+#define ECORE_IMF_INPUT_PANEL_KEY_LPAREN                       137
+#define ECORE_IMF_INPUT_PANEL_KEY_RPAREN                       138
+
+#define ECORE_IMF_INPUT_PANEL_KEY_MODECHANGE   247
+#define ECORE_IMF_INPUT_PANEL_KEY_SETTING                      248
+
+#define ECORE_IMF_INPUT_PANEL_KEY_MAX                  255
+
+#endif
index 10f6c2f..358b4e7 100644 (file)
@@ -10,7 +10,7 @@ AM_CPPFLAGS = \
 AM_CFLAGS = @WIN32_CFLAGS@
 
 lib_LTLIBRARIES = libecore_imf.la
-includes_HEADERS = Ecore_IMF.h
+includes_HEADERS = Ecore_IMF.h Ecore_IMF_Input_Panel_Key.h
 includesdir = $(includedir)/ecore-@VMAJ@
 
 libecore_imf_la_SOURCES = \
index 417fad3..9febbe0 100644 (file)
@@ -223,6 +223,8 @@ ecore_imf_context_info_get(Ecore_IMF_Context *ctx)
 EAPI void
 ecore_imf_context_del(Ecore_IMF_Context *ctx)
 {
+   void *data;
+
    if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
      {
         ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
@@ -231,6 +233,16 @@ ecore_imf_context_del(Ecore_IMF_Context *ctx)
      }
    if (ctx->klass->del) ctx->klass->del(ctx);
    ECORE_MAGIC_SET(ctx, ECORE_MAGIC_NONE);
+
+   EINA_LIST_FREE(ctx->private_key_list, data)
+      free(data);
+
+   EINA_LIST_FREE(ctx->disabled_key_list, data)
+      free(data);
+
+   ctx->private_key_list = NULL;
+   ctx->disabled_key_list = NULL;
+
    free(ctx);
 }
 
@@ -766,6 +778,13 @@ ecore_imf_context_new(const Ecore_IMF_Context_Class *ctxc)
    ctx->data = NULL;
    ctx->retrieve_surrounding_func = NULL;
    ctx->retrieve_surrounding_data = NULL;
+   ctx->input_panel_x = 0;
+   ctx->input_panel_y = 0;
+   ctx->input_panel_layout = ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL;
+   ctx->input_panel_orient = ECORE_IMF_INPUT_PANEL_ORIENT_NONE;
+   ctx->use_effect = EINA_TRUE;
+   ctx->callbacks = NULL;
+
    return ctx;
 }
 
@@ -1235,3 +1254,667 @@ ecore_imf_context_input_panel_enabled_get (Ecore_IMF_Context *ctx)
    return ctx->input_panel_enabled;
 }
 
+/**
+ * Set the specific data to pass to the input panel.
+ * this API is used by applications to deliver specific data to the input panel.
+ * the data format MUST be negotiated by both application and the input panel. 
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param data The specific data to be set to the input panel.
+ * @param len the length of data
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_imdata_set (Ecore_IMF_Context *ctx, const char *data, int len)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_imdata_set");
+        return;
+     }
+
+   if ((!data) || (len <=0)) return;
+
+   if (ctx->klass->input_panel_imdata_set)
+     ctx->klass->input_panel_imdata_set(ctx, data, len);
+}
+
+/**
+ * Get the specific data of the current active input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param data The specific data to be got from the input panel
+ * @param len The length of data
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_imdata_get (Ecore_IMF_Context *ctx, char *data, int *len)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_imdata_get");
+        return;
+     }
+
+   if (!data) return;
+
+   if (ctx->klass->input_panel_imdata_get)
+     ctx->klass->input_panel_imdata_get(ctx, data, len);
+}
+
+/**
+ * Get ISE Language of given ISE. -- Not supported for now --
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ */
+EAPI int
+ecore_imf_context_ise_get_ise_language (Ecore_IMF_Context *ctx, const char* ise_name, char ***langlist)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_ise_get_ise_language");
+        return -1;
+     }
+
+   if (!ise_name) return -1;
+
+   if (ctx->klass->ise_get_ise_language)
+       return ctx->klass->ise_get_ise_language(ctx, ise_name, langlist);
+   else
+      return -1;
+}
+
+/**
+ * Set keyboard language.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param lang see Ecore_IMF_Input_Panel_Lang
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * THIS API IS NOT SUPPORTED NOW
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_keyboard_language_set (Ecore_IMF_Context *ctx, Ecore_IMF_Keyboard_Lang lang)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_keyboard_language_set");
+        return;
+     }
+//   if (ctx->klass->ise_set_language) ctx->klass->ise_set_language(ctx, lang);
+}
+
+/**
+ * Get keyboard language.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return Ecore_IMF_Input_Panel_Lang
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * THIS API IS NOT SUPPORTED NOW
+ * @since 1.1.0
+ */
+EAPI Ecore_IMF_Keyboard_Lang
+ecore_imf_context_keyboard_language_get (Ecore_IMF_Context *ctx)
+{
+   Ecore_IMF_Keyboard_Lang lang = ECORE_IMF_KEYBOARD_LANG_NATIVE;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_keyboard_language_get");
+        return lang;
+     }
+/*
+   if (ctx->klass->input_panel_language_get) 
+     lang = ctx->klass->input_panel_language_get(ctx);
+*/
+   return lang;
+}
+
+/**
+ * Set ISF Language. -- Not supported for now --
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ */
+EAPI void
+ecore_imf_context_ise_set_isf_language (Ecore_IMF_Context *ctx, const char* lang)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_ise_set_isf_language");
+        return;
+     }
+
+   if (!lang) return;
+
+   if (ctx->klass->ise_set_isf_language)
+      ctx->klass->ise_set_isf_language(ctx, lang);
+}
+
+/**
+ * Set whether animation effect of the input panel is shown or not.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param use_effect whether animation effect is shown or not
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_use_effect_set (Ecore_IMF_Context *ctx, Eina_Bool use_effect)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_use_effect_set");
+        return;
+     }
+
+   if (ctx->klass->input_panel_use_effect_set)
+     ctx->klass->input_panel_use_effect_set(ctx, use_effect);
+
+   ctx->use_effect = use_effect;
+}
+
+/**
+ * Get whether the input panel supports animation effect or not when it is shown or hidden.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param use_effect whether animation effect is shown or not
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI Eina_Bool
+ecore_imf_context_input_panel_use_effect_get (Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_use_effect_get");
+        return EINA_TRUE;
+     }
+
+   return ctx->use_effect;
+}
+
+/**
+ * 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_IMControl_Group
+ * @since 1.1.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);
+}
+
+/**
+ * Set the private key of input panel.
+ * Since the second parameter of this API requires a layout index, so before using this API 
+ * application has to set a specific layout and that layout index should 
+ * be passed in the 2nd argument of this API.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param layout_index index of layout page to be set
+ * @param img_path the path of image file to be set
+ * @param key_index index of key to be set
+ * @param label text label to be appeared on private key
+ * @param value value of key, If NULL it will use original value of key
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_private_key_set (Ecore_IMF_Context *ctx, int layout_index, int key_index, const char *img_path, const char *label, int key_value, const char *key_string)
+{
+   Private_Key_Item *key_item;
+   Eina_List *l;
+   Eina_Bool exist = EINA_FALSE;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_private_key_set");
+        return;
+     }
+
+   if ((!label) && (!img_path)) return;
+
+   EINA_LIST_FOREACH(ctx->private_key_list, l, key_item)
+     {
+        if (key_item && (key_item->layout_idx == layout_index) &&
+            (key_item->key_idx == key_index))
+          {
+             // if exist in the list
+             exist = EINA_TRUE;
+             if (label)
+               {
+                  key_item->type = 0;
+                  strcpy(key_item->data, label);
+               }
+             else
+               {
+                  key_item->type = 1;
+                  strcpy(key_item->data, img_path);
+               }
+             key_item->key_value = key_value;
+             strcpy(key_item->key_string, key_string);
+          }
+     }
+
+   if (!exist)
+     {
+        key_item = calloc(1, sizeof(Private_Key_Item));
+        if (!key_item) return;
+
+        key_item->layout_idx = layout_index;
+        key_item->key_idx = key_index;;
+        if (label)
+          {
+             key_item->type = 0;
+             strcpy(key_item->data, label);
+          }
+        else
+          {
+             key_item->type = 1;
+             strcpy(key_item->data, img_path);
+          }
+        key_item->key_value = key_value;
+
+        if (key_string)
+          strcpy(key_item->key_string, key_string);
+
+        ctx->private_key_list = eina_list_append(ctx->private_key_list, key_item);
+     }
+
+//   if (ctx->klass->input_panel_private_key_set) ctx->klass->input_panel_private_key_set(ctx, layout_index, key_index, img_path, label, value);
+}
+
+/**
+ * Get the list of private key.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return Return the list of private key
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI Eina_List *
+ecore_imf_context_input_panel_private_key_list_get  (Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_private_key_list_get");
+        return NULL;
+     }
+
+   return ctx->private_key_list;
+}
+
+/**
+ * Set the key to be disabled.
+ * Since the second parameter of this API requires a layout index, so before using this API application has to set a specific layout and that layout index 
+ * should be passed in the 2nd argument of this API.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param layout_index index of layout page to be set
+ * @param key_index index of key to be set
+ * @param disabled The state
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_key_disabled_set (Ecore_IMF_Context *ctx, int layout_index, int key_index, Eina_Bool disabled)
+{
+   Disable_Key_Item *key_item;
+   Eina_List *l;
+   Eina_Bool exist = EINA_FALSE;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_key_disabled_set");
+        return;
+     }
+
+   EINA_LIST_FOREACH(ctx->disabled_key_list, l, key_item)
+     {
+        if (key_item && (key_item->layout_idx == layout_index) &&
+            (key_item->key_idx == key_index))
+          {
+             key_item->disabled = disabled;
+             exist = EINA_TRUE;
+          }
+     }
+
+   if (!exist)
+     {
+        key_item = calloc(1, sizeof(Disable_Key_Item));
+        if (!key_item) return;
+
+        key_item->layout_idx = layout_index;
+        key_item->key_idx = key_index;;
+        key_item->disabled = disabled;
+
+        ctx->disabled_key_list = eina_list_append(ctx->disabled_key_list, key_item);
+     }
+
+//   if (ctx->klass->input_panel_key_disabled_set) ctx->klass->input_panel_key_disabled_set(ctx, layout_index, key_index, disabled);
+}
+
+/**
+ * Get the list of disabled keys.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return Return the list of private key
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI Eina_List *
+ecore_imf_context_input_panel_key_disabled_list_get (Ecore_IMF_Context *ctx)
+{
+   return ctx->disabled_key_list;
+}
+
+/**
+ * Restore all default properties of input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_reset (Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_reset");
+        return;
+     }
+
+   if (ctx->klass->input_panel_reset) ctx->klass->input_panel_reset(ctx);
+}
+
+/**
+ * Set the screen orientation of input panel
+ * To show the keypad in landscape mode application should first call this API with 2nd parameter as 90 or 270.
+ * After then only application should call @ref ecore_imf_context_input_panel_show.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param orientation the orientation of input panel
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_orient_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Orient orientation)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_orient_set");
+        return;
+     }
+
+   if (ctx->klass->input_panel_orient_set)
+      ctx->klass->input_panel_orient_set(ctx, orientation*90);
+
+   ctx->input_panel_orient = orientation;
+}
+
+/**
+ * Get the screen orientation of input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return The screen orientation of input panel
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI Ecore_IMF_Input_Panel_Orient
+ecore_imf_context_input_panel_orient_get (Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_orient_get");
+        return ECORE_IMF_INPUT_PANEL_ORIENT_NONE;
+     }
+
+   return ctx->input_panel_orient;
+}
+
+/**
+ * Get name of current active input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param name input panel name to be got
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ */
+EAPI void
+ecore_imf_context_ise_get_active_isename (Ecore_IMF_Context *ctx, char* name)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_ise_get_active_isename");
+        return;
+     }
+
+   if (!name) return;
+
+   if (ctx->klass->ise_get_active_isename)
+      ctx->klass->ise_get_active_isename(ctx, name);
+}
+
+/**
+ * Choose the active input panel by its name.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param name input panel name to be set
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ */
+EAPI void
+ecore_imf_context_ise_set_active_ise_by_name (Ecore_IMF_Context *ctx, const char* name)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_ise_set_active_ise_by_name");
+        return;
+     }
+
+   if (!name) return;
+
+   if (ctx->klass->ise_set_active_ise_by_name)
+      ctx->klass->ise_set_active_ise_by_name(ctx, name);
+}
+
+/**
+ * Set input panel by its uuid.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param uuid input panel uuid to be set
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ */
+EAPI void
+ecore_imf_context_ise_set_active_ise_by_uuid (Ecore_IMF_Context *ctx, const char* uuid)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_ise_set_active_ise_by_uuid");
+        return;
+     }
+
+   if (!uuid) return;
+
+   if (ctx->klass->ise_set_active_ise_by_uuid)
+      ctx->klass->ise_set_active_ise_by_uuid(ctx, uuid);
+}
+
+/**
+ * Get list of input panels.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param iselist pointer to the list to be got.
+ * @return  int ise counter of iselist
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ */
+EAPI int
+ecore_imf_context_ise_get_iselist (Ecore_IMF_Context *ctx, char*** iselist)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_ise_get_iselist");
+        return -1;
+     }
+
+   if (ctx->klass->ise_get_iselist)
+      return ctx->klass->ise_get_iselist(ctx, iselist);
+   else
+      return -1;
+}
+
+/**
+ * Get state of current active input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param The state of input panel.
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.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_INVALID;
+   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_INVALID;
+     }
+
+   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_IMControl_Group
+ * @since 1.1.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, 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_IMControl_Group
+ * @since 1.1.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);
+}
+
+/**
+ * Move the soft keyboard to the new position.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param x X position to move the input panel to
+ * @param y Y position to move the input panel to
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_move (Ecore_IMF_Context *ctx, int x, int y)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_move");
+        return;
+     }
+
+   if (ctx->klass->input_panel_move) ctx->klass->input_panel_move(ctx, x, y);
+   ctx->input_panel_x = x;
+   ctx->input_panel_y = y;
+}
+
+/**
+ * Set the caps mode of the input panel.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param mode the caps mode
+ * @ingroup Ecore_IMF_Context_IMControl_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_input_panel_caps_mode_set (Ecore_IMF_Context *ctx,
+                                             Ecore_IMF_Input_Panel_Caps_Mode mode)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_input_panel_caps_mode_set");
+        return;
+     }
+
+   if (ctx->klass->input_panel_caps_mode_set)
+     ctx->klass->input_panel_caps_mode_set(ctx, mode);
+}
index 07a5b09..d17f3ca 100644 (file)
@@ -45,6 +45,9 @@ struct _Ecore_IMF_Context
    int                            input_mode;
    void                          *window;
    void                          *client_canvas;
+   int                            input_panel_x;
+   int                            input_panel_y;
+   Ecore_IMF_Input_Panel_Orient   input_panel_orient;
    Eina_Bool                    (*retrieve_surrounding_func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
    void                          *retrieve_surrounding_data;
    Ecore_IMF_Autocapital_Type     autocapital_type;
@@ -52,6 +55,10 @@ struct _Ecore_IMF_Context
    Ecore_IMF_Input_Panel_Lang     input_panel_lang;
    Eina_Bool                      allow_prediction : 1;
    Eina_Bool                      input_panel_enabled : 1;
+   Eina_List                     *callbacks;
+   Eina_List                     *disabled_key_list;
+   Eina_List                     *private_key_list;
+   Eina_Bool                      use_effect : 1;
 };
 
 struct _Ecore_IMF_Module
old mode 100644 (file)
new mode 100755 (executable)
index 05f7e9f..a06136e
@@ -836,7 +836,64 @@ struct _Ecore_X_Event_Window_Delete_Request
    Ecore_X_Window win;
    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;
@@ -1498,6 +1555,11 @@ EAPI void                     ecore_x_window_shape_window_set_xy(
    Ecore_X_Window shape_win,
    int            x,
    int            y);
+EAPI void                     ecore_x_window_shape_window_set_xy(
+   Ecore_X_Window win,
+   Ecore_X_Window shape_win,
+   int            x,
+   int            y);
 EAPI void                     ecore_x_window_shape_rectangle_set(
    Ecore_X_Window win,
    int            x,
@@ -2210,6 +2272,25 @@ EAPI void
                                           ecore_x_e_illume_quickpanel_position_update_send(
    Ecore_X_Window win);
 
+/* added by doyoun.kang - 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_comp_sync_counter_set(
    Ecore_X_Window       win,
    Ecore_X_Sync_Counter counter);
@@ -2245,6 +2326,9 @@ EAPI void                                 ecore_x_e_comp_pixmap_set(
 EAPI Ecore_X_Pixmap                       ecore_x_e_comp_pixmap_get(
    Ecore_X_Window win);
 
+EAPI void                 ecore_x_e_comp_dri_buff_flip_supported_set(Ecore_X_Window root, Eina_Bool enabled);
+EAPI Eina_Bool            ecore_x_e_comp_dri_buff_flip_supported_get(Ecore_X_Window root);
+  
 EAPI Ecore_X_Sync_Alarm                   ecore_x_sync_alarm_new(
    Ecore_X_Sync_Counter counter);
 EAPI Eina_Bool                            ecore_x_sync_alarm_free(
index 4001436..f7925f9 100644 (file)
@@ -249,4 +249,26 @@ EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_FLUSH;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_DUMP;
 EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP;
 
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_USER_CREATED_WINDOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_PARENT_BORDER_WINDOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_OPERATOR;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE;
+
+/* added by doyoun.kang - for user created window */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_USER_CREATED_WINDOW;
+
+/* added by gl77.lee - XID that points to the parent border window */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_PARENT_BORDER_WINDOW;
+
+/* added by doyoun.kang - for indicator's state */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE;
+
+/* added by doyoun.kang - 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;
+
 #endif /* _ECORE_X_ATOMS_H */
index 872f38e..1c8aec9 100644 (file)
@@ -275,3 +275,23 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_CANCEL = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_FLUSH = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_DUMP = 0;
 EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP = 0;
+
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_USER_CREATED_WINDOW = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_PARENT_BORDER_WINDOW = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_OPERATOR = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE = 0;
+
+/* added by doyoun.kang - for user created window */
+EAPI Ecore_X_Atom ECORE_X_ATOM_USER_CREATED_WINDOW = 0;
+
+/* added by gl77.lee - XID that points to the parent border window */
+EAPI Ecore_X_Atom ECORE_X_ATOM_PARENT_BORDER_WINDOW = 0;
+
+
+/* added by doyoun.kang - 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;
index c43b270..281d706 100644 (file)
@@ -280,7 +280,34 @@ _ecore_x_atoms_init(void)
 
       { "_E_COMP_FLUSH", &ECORE_X_ATOM_E_COMP_FLUSH },
       { "_E_COMP_DUMP", &ECORE_X_ATOM_E_COMP_DUMP },
-      { "_E_COMP_PIXMAP", &ECORE_X_ATOM_E_COMP_PIXMAP }
+      { "_E_COMP_PIXMAP", &ECORE_X_ATOM_E_COMP_PIXMAP },
+     
+      { "_E_USER_CREATED_WINDOW", &ECORE_X_ATOM_E_USER_CREATED_WINDOW },
+      { "_E_PARENT_BORDER_WINDOW", &ECORE_X_ATOM_E_PARENT_BORDER_WINDOW },
+      { "_E_COMP_DRI_BUFF_FLIP_SUPPORTED", &ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED },
+
+      /* added by doyoun.kang 100218 - for rotation */
+      { "_E_ILLUME_ROTATE_WINDOW_ANGLE", & ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE },
+      { "_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLES", & ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE },
+      { "_E_ILLUME_ROTATE_OPERATOR", & ECORE_X_ATOM_E_ILLUME_ROTATE_OPERATOR },
+      { "_E_ILLUME_ROTATE_ROOT_ANGLE", & ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE },
+
+      /* added by doyoun.kang - for user created window */ 
+      { "_ECORE_X_USER_CREATED_WINDOW", & ECORE_X_ATOM_USER_CREATED_WINDOW },
+
+      /* added by gl77.lee - XID that points to the parent border window */
+      { "_ECORE_X_PARENT_BORDER_WINDOW", &ECORE_X_ATOM_PARENT_BORDER_WINDOW },
+
+      /* added by doyoun.kang - for indicator's state */
+      { "_E_ILLUME_INDICATOR_STATE", &ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE },
+      { "_E_ILLUME_ROTATE_WINDOW_ANGLE", &ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE },
+      { "_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLES", &ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE },
+      { "_E_ILLUME_ROTATE_OPERATOR", &ECORE_X_ATOM_E_ILLUME_ROTATE_OPERATOR },
+      { "_E_ILLUME_ROTATE_ROOT_ANGLE", &ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE },
+
+      /* added by doyoun.kang - 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 }
    };
    Atom *atoms;
    char **names;
index 4caf1fd..2d7657f 100644 (file)
@@ -755,6 +755,83 @@ ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win)
                                  1, 0, 0, 0, 0);
 } /* ecore_x_e_illume_quickpanel_position_update_send */
 
+/* added by doyoun.kang - 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)
@@ -1039,3 +1116,57 @@ ecore_x_e_comp_pixmap_get(Ecore_X_Window win)
    return pixmap;
 } /* ecore_x_e_comp_pixmap_get */
 
+EAPI void
+ecore_x_e_comp_dri_buff_flip_supported_set(Ecore_X_Window root, Eina_Bool enabled)
+{
+  Ecore_X_Window win;
+  
+  if (!root) root = DefaultRootWindow(_ecore_x_disp);
+  LOGFN(__FILE__, __LINE__, __FUNCTION__);
+  if (enabled)
+    {
+      win = ecore_x_window_new(root, 1, 2, 3, 4);
+      ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED,
+                                  ECORE_X_ATOM_WINDOW, &win, 1);
+      ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED,
+                                  ECORE_X_ATOM_WINDOW, &win, 1);
+    }
+  else
+    {
+      int ret =
+        ecore_x_window_prop_xid_get(root,
+                                    ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED,
+                                    ECORE_X_ATOM_WINDOW,
+                                    &win, 1);
+      if ((ret == 1) && (win))
+        {
+          ecore_x_window_prop_property_del(root, ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED);
+          ecore_x_window_free(win);
+        }
+    }
+}
+
+EAPI Eina_Bool
+ecore_x_e_comp_dri_buff_flip_supported_get(Ecore_X_Window root)
+{
+  Ecore_X_Window win, win2;
+  int ret;
+  
+  LOGFN(__FILE__, __LINE__, __FUNCTION__);
+  if (!root) root = DefaultRootWindow(_ecore_x_disp);
+  ret =
+    ecore_x_window_prop_xid_get(root,
+                                ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED,
+                                ECORE_X_ATOM_WINDOW,
+                                &win, 1);
+  if ((ret == 1) && (win))
+    {
+      ret =
+        ecore_x_window_prop_xid_get(win,
+                                    ECORE_X_ATOM_E_COMP_DRI_BUFF_FLIP_SUPPORTED,
+                                    ECORE_X_ATOM_WINDOW,
+                                    &win2, 1);
+      if ((ret == 1) && (win2 == win)) return EINA_TRUE;
+    }
+  return EINA_FALSE;
+}
old mode 100644 (file)
new mode 100755 (executable)