4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
8 * Jaewon Lim <jaewon81.lim@samsung.com>
9 * Woojin Jung <woojin2.jung@samsung.com>
10 * Juyoung Kim <j0.kim@samsung.com>
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)
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.
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
37 static int init_orient = 0;
39 Ecore_Event_Handler *register_orientation_event_listener();
40 void unregister_orientation_event_listener(Ecore_Event_Handler **handler);
42 Ecore_Event_Handler *handler = NULL;
44 EAPI int ecore_x_init(const char *name)
46 static int (*ecore_x_initp)(const char *name);
50 GET_REAL_FUNC(ecore_x_init, LIBOSP_UIFW);
53 res = ecore_x_initp(name);
55 if ((init_orient == 0) && (res == 1)) {
56 handler = register_orientation_event_listener();
62 EAPI int ecore_x_shutdown(void)
64 static int (*ecore_x_shutdownp)(void);
68 GET_REAL_FUNC(ecore_x_shutdown, LIBOSP_UIFW);
71 res = ecore_x_shutdownp();
73 if ((init_orient == 1) && (res == 0)) {
74 unregister_orientation_event_listener(&handler);
81 Eina_Bool _da_onclientmessagereceived(void __unused *pData, int __unused type,
84 Ecore_X_Event_Client_Message *pClientEvent;
87 pClientEvent = (Ecore_X_Event_Client_Message*)pEvent;
89 //This code from ecore_x
90 //So I don't know what 32 does mean
91 if (pClientEvent->format != 32)
92 return ECORE_CALLBACK_PASS_ON;
94 if (pClientEvent != NULL) {
95 if (pClientEvent->message_type ==
96 ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_PREPARE) {
97 int orientation = (int)pClientEvent->data.l[1];
98 on_orientation_changed(orientation, false);
103 return ECORE_CALLBACK_RENEW;
106 Ecore_Event_Handler *register_orientation_event_listener()
108 Ecore_Event_Handler *handler;
111 handler = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
112 _da_onclientmessagereceived, NULL);
119 void unregister_orientation_event_listener(Ecore_Event_Handler **handler)
123 ecore_event_handler_del(*handler);