1508407f5e4e2cf17ed6978060d7536a21fe6eb9
[platform/core/system/swap-probe.git] / probe_event / orientation.c
1 /*
2  *  DA probe
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact:
7  *
8  * Jaewon Lim <jaewon81.lim@samsung.com>
9  * Woojin Jung <woojin2.jung@samsung.com>
10  * Juyoung Kim <j0.kim@samsung.com>
11  *
12  * This library is free software; you can redistribute it and/or modify it under
13  * the terms of the GNU Lesser General Public License as published by the
14  * Free Software Foundation; either version 2.1 of the License, or (at your option)
15  * any later version.
16  *
17  * This library is distributed in the hope that it will be useful, but WITHOUT ANY
18  * WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20  * License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License
23  * along with this library; if not, write to the Free Software Foundation, Inc., 51
24  * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25  *
26  * Contributors:
27  * - S-Core Co., Ltd
28  *
29  */
30
31 #include <Ecore.h>
32 #include <Ecore_X.h>
33
34 #include "daprobe.h"
35 #include "dahelper.h"
36
37
38 Ecore_Event_Handler *register_orientation_event_listener();
39 void unregister_orientation_event_listener(Ecore_Event_Handler **handler);
40
41 Ecore_Event_Handler *handler = NULL;
42
43
44 Eina_Bool _da_onclientmessagereceived(void __unused *pData, int __unused type,
45                                       void *pEvent)
46 {
47         Ecore_X_Event_Client_Message *pClientEvent;
48
49         probeBlockStart();
50         pClientEvent = (Ecore_X_Event_Client_Message*)pEvent;
51
52         //This code from ecore_x
53         //So I don't know what 32 does mean
54         if (pClientEvent->format != 32)
55                 return ECORE_CALLBACK_PASS_ON;
56
57         if (pClientEvent != NULL) {
58                 if (pClientEvent->message_type ==
59                     ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_PREPARE) {
60                         int orientation = (int)pClientEvent->data.l[1];
61                         on_orientation_changed(orientation, false);
62                 }
63         }
64         probeBlockEnd();
65
66         return ECORE_CALLBACK_RENEW;
67 }
68
69 Ecore_Event_Handler *register_orientation_event_listener()
70 {
71         Ecore_Event_Handler *handler;
72         probeBlockStart();
73
74         handler = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
75                                           _da_onclientmessagereceived, NULL);
76
77         probeBlockEnd();
78
79         return handler;
80 }
81
82 void unregister_orientation_event_listener(Ecore_Event_Handler **handler)
83 {
84         probeBlockStart();
85         if (*handler) {
86                 ecore_event_handler_del(*handler);
87                 *handler = NULL;
88         }
89         probeBlockEnd();
90 }