[efl-util] add screen shot and input generator API
authorJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 7 Apr 2015 12:39:48 +0000 (21:39 +0900)
committerjhyuni.kang <jhyuni.kang@samsung.com>
Wed, 8 Apr 2015 05:34:03 +0000 (14:34 +0900)
Change-Id: I66ce039e8e52242290ea0a937f5038642eac85d3
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
org.tizen.guides/html/native/ui/efl_util_n.htm [changed mode: 0644->0755]
org.tizen.tutorials/html/native/ui/efl_util_tutorial_n.htm [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 05825c9..627f4c1
        </div>
        
        <div id="toc_border"><div id="toc">
-       
-               
+               <p class="toc-title">Content </P>
+               <ul class="toc">
+                       <li><a href="#noti">Notification Window</a></li>
+                       <li><a href="#shot">Screen Shot</a></li>
+                       <li><a href="#input_gen">Input Generator</a></li>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
                        <li><a href="../../../../org.tizen.tutorials/html/native/ui/efl_util_tutorial_n.htm">EFL UTIL Tutorial</a></li> 
 <div id="container"><div id="contents"><div class="content">
 
   <h1>EFL UTIL</h1> 
-<p>The <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__EFL__UTIL__MODULE.html">EFL UTIL</a> is a utility package that supports additional notification level functionality of EFL. It provides the following functions for setting and getting the notification level of the notification window (which is of the EFL window type):</p>
+<P> The <a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__EFL__UTIL__MODULE.html">EFL UTIL</a> is a utility package that supports several functioinality of EFL. It provides the following functions.</P>
+
+<h2 id="noti" name="noti">Notification Window</h2>
+
+<p>The Notification Window API provides setting and getting the notification level of the notification window (which is of the EFL window type):</p>
 
 <ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">efl_util_set_notification_window_level()</span></li>
 <li><span style="font-family: Courier New,Courier,monospace;">efl_util_get_notification_window_level()</span></li></ul>
 
+<h3>Background</h3>
 <p>To understand notification levels, you must first learn about the Tizen window layer hierarchy. Window layers are logical containers used to control the window stack order. Each window belongs to 1 layer and can change the stack order in the layer. Windows in same layer are always placed on or under a window in another layer. In addition to the default &quot;normal layer&quot;, there exists a &quot;notification layer&quot;, which is always placed above the normal layer.</p>
 
 
@@ -49,6 +56,7 @@
 
 <p>Each window is set to  a specific layer according to its type or properties. Most application windows belong to the normal layer. However, in case of an important alarm or other information crucial to the user, you can set the window to belong to the notification layer. This ensures that the user notices the information immediately, because the window belonging to the notification layer is always shown above the windows in the normal layer.</p> 
 
+<h3>Usage</h3>
 <p>A window that belongs to the notification layer is called a &quot;notification window&quot;. To make a notification window:</p>
 
 <ol><li>Set the window type to <span style="font-family: Courier New,Courier,monospace;">NOTIFICATION</span>, by calling the <span style="font-family: Courier New,Courier,monospace;">elm_win_add()</span> function with the third parameter set to <span style="font-family: Courier New,Courier,monospace;">ELM_WIN_NOTIFICATION</span>.</li>
@@ -63,7 +71,7 @@
 <p class="figure">Figure: Notification levels</p> 
 <p style="text-align:center;"><img alt="Notification levels" src="../../images/efl_notilevels.png" /></p> 
 
-
+<h3>Example</h3>
 <p>The following code snippets shown how to make a notification window with a higher level.</p>
 
 <pre class="prettyprint">
@@ -127,6 +135,125 @@ void get_notification_level (Evas_Object *eo)
 }</pre>
   
 
+<h2 id="shot" name="shot">Screen Shot</h2>
+
+<p>The Screen Shot API provides getting screen image to user (return tbm_surface handler)</p>
+
+<h3>Initialize</h3>
+<P>Make efl_util_screenshot_h structure and initialize structure members.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">efl_util_screenshot_h efl_util_screenshot_initialize(int width, int height)</span></li></ul>
+
+<h3>Take Screen Shot</h3>
+<P>Create screen capture data and return to tbm_surface handler.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">tbm_surface_h efl_util_screenshot_take_tbm_surface(efl_util_screenshot_h screenshot)</span></li></ul>
+
+<h3>Terminate</h3>
+<P>Free efl_util_screenshot_h structure.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">void efl_util_screenshot_deinitialize(efl_util_screenshot_h screenshot)</span></li></ul>
+
+<h3>Example</h3>
+<pre class="prettyprint">
+#include &lt;tbm_surface.h&gt;
+#include &lt;efl_util.h&gt;
+#include &lt;X11/Xlib.h&gt;
+
+void capture()
+{
+&nbsp;&nbsp;&nbsp;efl_util_screenshot_h screenshot = NULL;
+&nbsp;&nbsp;&nbsp;tbm_surface_h tbm_surface = NULL;
+&nbsp;&nbsp;&nbsp;tbm_surface_info_s tsuri;
+
+&nbsp;&nbsp;&nbsp;screenshot = efl_util_screenshot_initialize(width, height);
+&nbsp;&nbsp;&nbsp;if (screenshot) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbm_surface = efl_util_screenshot_take_tbm_surface(screenshot);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tbm_surface) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//treat tbm_surface handler(screen shot data)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_screenshot_deinitialize(screenshot);
+&nbsp;&nbsp;&nbsp;}
+}</pre>
+
+
+<h2 id="input_gen" name="input_gen">Input Generator</h2>
+
+<p>The Input Generator API provides generating input events(such as key and touch events).</p>
+
+<h3>Initialize</h3>
+<P>Initialize the input generator and select a device type.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">int efl_util_input_initialize_generator(efl_util_input_device_type_e dev_type)</span></li></ul>
+
+<h3>Generate Event</h3>
+<P>Generate a key event.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">int efl_util_input_generate_key(const char *key_name, int pressed)</span></li></ul>
+<P>Generate a touch event.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">int efl_util_input_generate_touch(int idx, efl_util_input_touch_type_e touch_type, int x, int y)</span></li></ul>
+
+<h3>Terminate</h3>
+<P>Free input generator.</P>
+<ul class="ul"><li><span style="font-family: Courier New,Courier,monospace;">void efl_util_input_deinitialize_generator(void)</span></li></ul>
+
+<h3>Example</h3>
+<p>Please generate key events with Press and Release pair.</p>
+<pre class="prettyprint">
+#include &lt;efl_util.h&gt;
+
+void key_event_generator()
+{
+&nbsp;&nbsp;&nbsp;int ret = EFL_UTIL_ERROR_NONE;
+
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_initialize_generator(EFL_UTIL_INPUT_DEVTYPE_KEYBOARD);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to initialize input generator
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_key("XF86Menu", 1);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a "XF86Menu" key press event
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_key("XF86Menu", 0);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a "XF86Menu" key release event
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+}</pre>
+
+<p>Please generate touch events with Begin/Update/End sequence each of index.</p>
+<pre class="prettyprint">
+#include &lt;efl_util.h&gt;
+
+void touch_event_generator()
+{
+&nbsp;&nbsp;&nbsp;int ret = EFL_UTIL_ERROR_NONE;
+
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_initialize_generator(EFL_UTIL_INPUT_DEVTYPE_TOUCHSCREEN);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to initialize input generator
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_touch(0, EFL_UTIL_INPUT_TOUCH_BEGIN, 100, 100);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a first finger touch press event on (100, 100)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_touch(0, EFL_UTIL_INPUT_TOUCH_UPDATE, 110, 110);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a first finger touch move event to (110, 110)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_touch(0, EFL_UTIL_INPUT_TOUCH_END, 110, 110);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a first finger touch release event to (110, 110)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+}</pre>
 
 
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
@@ -151,4 +278,4 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga
 </script>
 
 </body>
-</html>
\ No newline at end of file
+</html>
old mode 100644 (file)
new mode 100755 (executable)
index dde507c..f173d2b
@@ -11,7 +11,7 @@
        <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
        <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
 
-       <title>EFL UTIL: Adjusting the Notification Window Level</title>  
+       <title>EFL UTIL</title>
 </head>
 
 <body onload="prettyPrint()" style="overflow: auto;">
                <ul class="toc">
                        <li><a class="opensection" href="#init">Initializing EFL Utility</a>
                        </li>
-                       <li><a class="opensection" href="#create">Create a Notification Window and Setting a Notification Window Level</a>
+                       <li><a class="opensection" href="#create">Creating a Notification Window and Setting a Notification Window Level</a>
                        </li>
                        <li><a class="opensection" href="#getting">Getting the Notification Window Level</a>
                        </li>
-               </ul>           
+                       <li><a class="opensection" href="#screenshot">Getting a Screen Shot</a>
+                       </li>
+                       <li><a class="opensection" href="#input_gen_key">Generating a Key Input Event </a>
+                       </li>
+                       <li><a class="opensection" href="#input_gen_touch">Generating a Touch Input Event </a>
+                       </li>
+               </ul>
                <p class="toc-title">Related Info</p>
                <ul class="toc">
                        <li><a href="../../../../org.tizen.guides/html/native/ui/efl_util_n.htm">EFL UTIL Guide</a></li>
                        <li><a href="../../../../org.tizen.native.mobile.apireference/group__CAPI__EFL__UTIL__MODULE.html">EFL UTIL API</a></li>
                </ul>
        </div></div>
-</div> 
+</div>
 
 <div id="container"><div id="contents"><div class="content">
-<h1>EFL UTIL: Adjusting the Notification Window Level</h1>
+<h1>EFL UTIL</h1>
   <div class="cont"><div class="static-cont">
   
  <p>This tutorial demonstrates how you can adjust the level of a notification window using the EFL UTIL API.</p>
   <p>Create a notification window and set the window level.</p></li>
   <li><a href="#getting">Getting the Notification Window Level</a>
   <p>Get the notification window level.</p></li>
+  <li><a href="#screenshot">Getting a Screen Shot</a>
+  <p>Get a screen shot.</p></li>
+  <li><a href="#input_gen_key">Generating a Key Input Event</a>
+  <p>Generate a key input event.</p></li>
+  <li><a href="#input_gen_touch">Generating a Touch Input Event</a>
+  <p>Generate a touch input event.</p></li>
   </ul>
-       
+
 <div class="devicespecs-util mt5 clfix">
                <ul class="dutil">
                        <li><a href="#" class="showA">Show All</a></li>
@@ -71,9 +83,8 @@
                        <div class="devicespec-con"> 
  <p>To use the EFL UTIL API, the following header file has to be included:</p>
   <pre class="prettyprint">#include &lt;efl_util.h&gt;</pre> 
-  <p>If the window type is not notification type, the <span style="font-family: Courier New,Courier,monospace">efl_util_set_notification_window_level()</span> function returns an error.</p>
        </div>
-               </li>                   
+               </li>
                <li>
                        <div class="devicespec-tit">
  <h2 id="create" name="create" class="items-tit-h2">Creating a Notification Window and Setting a Notification Window Level</h2>
@@ -81,6 +92,7 @@
   </div>
                        <div class="devicespec-con"> 
 <p>To create a notification window and set the window level, use the <span style="font-family: Courier New,Courier,monospace">efl_util_set_notification_window_level()</span> function: </p> 
+<p>If the window type is not notification type, the <span style="font-family: Courier New,Courier,monospace">efl_util_set_notification_window_level()</span> function returns an error.</p>
 <pre class="prettyprint">#include &lt;Elementary.h&gt;
 #include &lt;efl_util.h&gt;
 #include &lt;dlog.h&gt;
@@ -106,7 +118,7 @@ void create_win()
 </pre> 
 
        </div>
-               </li>                   
+               </li>
                <li>
                        <div class="devicespec-tit">
  <h2 id="getting" name="getting" class="items-tit-h2">Getting the Notification Window Level</h2>
@@ -144,8 +156,125 @@ void create_win()
 }</pre>
        </div>
                </li>                   
+                <li>
+                        <div class="devicespec-tit">
+ <h2 id="screenshot" name="screenshot" class="items-tit-h2">Getting a Screen Shot</h2>
+<span class="fr"><a href="#" class="bt-arr"><em>Hide</em></a></span>
+  </div>
+                        <div class="devicespec-con">
+ <p>To get a screen shot, excute efl_util_screenshot_initialize() function.</p>
+ <p>After getting efl_util_screenshot_h structure, excute efl_util_screenshot_take_tbm_surface() function to get tbm_surface handler which has screen shot data.</p>
+ <p>After using efl_util_screenshot_h structure, excute efl_util_screenshot_deinitialize() function to free resources.</p>
+
+  <pre class="prettyprint">
+#include &lt;tbm_surface.h&gt;
+#include &lt;efl_util.h&gt;
+#include &lt;X11/Xlib.h&gt;
+
+void capture()
+{
+&nbsp;&nbsp;&nbsp;efl_util_screenshot_h screenshot = NULL;
+&nbsp;&nbsp;&nbsp;tbm_surface_h tbm_surface = NULL;
+&nbsp;&nbsp;&nbsp;tbm_surface_info_s tsuri;
+
+&nbsp;&nbsp;&nbsp;screenshot = efl_util_screenshot_initialize(width, height);
+&nbsp;&nbsp;&nbsp;if (screenshot) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbm_surface = efl_util_screenshot_take_tbm_surface(screenshot);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tbm_surface) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//treat tbm_surface handler(screen shot data)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_screenshot_deinitialize(screenshot);
+&nbsp;&nbsp;&nbsp;}
+}</pre>
+        </div>
+                </li>
+                <li>
+                        <div class="devicespec-tit">
+ <h2 id="input_gen_key" name="input_gen_key" class="items-tit-h2">Generating a Key Input Event</h2>
+<span class="fr"><a href="#" class="bt-arr"><em>Hide</em></a></span>
+  </div>
+                        <div class="devicespec-con">
+ <p>To generate key input events, excute efl_util_input_initialize_generator() function.</p>
+ <p>After setting input device type, excute efl_util_input_generate_key() function to generate key input events.</p>
+ <p>After generating key events, excute efl_util_input_deinitialize_generator() function to free resources.</p>
+
+  <pre class="prettyprint">
+#include &lt;efl_util.h&gt;
+
+void key_event_generator()
+{
+&nbsp;&nbsp;&nbsp;int ret = EFL_UTIL_ERROR_NONE;
+
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_initialize_generator(EFL_UTIL_INPUT_DEVTYPE_KEYBOARD);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to initialize input generator
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_key("XF86Menu", 1);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a "XF86Menu" key press event
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_key("XF86Menu", 0);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a "XF86Menu" key release event
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+}</pre>
+        </div>
+                </li>
+                <li>
+                        <div class="devicespec-tit">
+ <h2 id="input_gen_touch" name="input_gen_touch" class="items-tit-h2">Generating a Touch Input Event</h2>
+<span class="fr"><a href="#" class="bt-arr"><em>Hide</em></a></span>
+  </div>
+                        <div class="devicespec-con">
+ <p>To generate touch input events, excute efl_util_input_initialize_generator() function.</p>
+ <p>After setting input device type, excute efl_util_input_generate_touch() function to generate touch input events.</p>
+ <p>After generating touch events, excute efl_util_input_deinitialize_generator() function to free resources.</p>
+
+  <pre class="prettyprint">
+#include &lt;efl_util.h&gt;
+
+void touch_event_generator()
+{
+&nbsp;&nbsp;&nbsp;int ret = EFL_UTIL_ERROR_NONE;
+
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_initialize_generator(EFL_UTIL_INPUT_DEVTYPE_TOUCHSCREEN);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to initialize input generator
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_touch(0, EFL_UTIL_INPUT_TOUCH_BEGIN, 100, 100);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a first finger touch press event on (100, 100)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_touch(0, EFL_UTIL_INPUT_TOUCH_UPDATE, 110, 110);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a first finger touch move event to (110, 110)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;ret = efl_util_input_generate_touch(0, EFL_UTIL_INPUT_TOUCH_END, 110, 110);
+&nbsp;&nbsp;&nbsp;if (ret != EFL_UTIL_ERROR_NONE) {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// failed to generate a first finger touch release event to (110, 110)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
+&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;efl_util_input_deinitialize_generator();
+}</pre>
+        </div>
+                </li>
+
+
+
        </ul>   
-</div>                         
+</div>
 </div>
   
 <script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>