[Title] Revert to use printf() for the urgent logs
[platform/core/uifw/coregl.git] / src / coregl_internal.h
1 #ifndef COREGL_INTERNAL_H
2 #define COREGL_INTERNAL_H
3
4 #include <stdio.h>
5
6 #include "coregl.h"
7
8 #include "modules/coregl_module.h"
9
10 #define unlikely(x) __builtin_expect(x, 0)
11
12 // Symbol definition for real
13 #define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)     extern RET_TYPE (*_sym_##FUNC_NAME) PARAM_LIST;
14 # include "headers/sym.h"
15 #undef _COREGL_SYMBOL
16
17 #define COREGL_DEBUG
18
19 #define LOG_TAG "CoreGL"
20 #include <dlog.h>
21
22 ///////////////////////////////////////
23 // Disable dlog for debugging urgent issues //
24 #ifdef COREGL_DEBUG
25 # undef LOGE
26 # define LOGE printf
27 # undef LOGW
28 # define LOGW printf
29 # undef LOGD
30 # define LOGD printf
31 #endif
32 ///////////////////////////////////////
33
34 # define COREGL_ERR(...) \
35      LOGE(" "__VA_ARGS__)
36 # define COREGL_WRN(...) \
37      LOGW(" "__VA_ARGS__)
38 # ifdef COREGL_DEBUG
39 #  define COREGL_DBG(...) \
40      LOGD(" "__VA_ARGS__)
41 # else
42 #  define COREGL_DBG(...)
43 # endif
44
45 # define COREGL_LOG(...) \
46      LOGD(" "__VA_ARGS__)
47
48
49 # define TRACE(...) \
50      if (trace_fp != NULL) \
51        fprintf(trace_fp, __VA_ARGS__); \
52      else \
53        LOGD(" "__VA_ARGS__)
54
55 # define TRACE_END() \
56      if (trace_fp != NULL) \
57        fflush(trace_fp)
58 #define _COREGL_TRACE_OUTPUT_INTERVAL_SEC 5
59
60
61 #ifdef COREGL_DEBUG
62 # define AST(expr) \
63      if (!(expr)) { LOGE("\E[40;31;1m%s(%d) error. '"#expr"'\E[0m\n", __func__, __LINE__); }
64 #else
65 # define AST(expr) \
66      if (expr)
67 #endif
68
69 typedef GLvoid *     GLvoidptr;
70 typedef GLuint       GLuintmask;
71
72 #define _COREGL_INT_INIT_VALUE -3
73
74 #define COREGL_OVERRIDE_API(mangle, func, prefix) \
75         mangle##func = prefix##func
76
77 typedef EGLSurface     GLSurface;
78 typedef EGLDisplay     GLDisplay;
79 typedef EGLContext     GLContext;
80
81 #define COREGL_GL_NO_CONTEXT EGL_NO_CONTEXT
82
83 typedef struct _GLThreadState
84 {
85         int                      thread_id;
86         void                    *module_data[COREGL_MAX_MODULES];
87 } GLThreadState;
88
89 extern void                *glue_lib_handle;
90 extern void                *egl_lib_handle;
91
92 #include "coregl_thread_pthread.h"
93
94 typedef struct _General_Trace_List
95 {
96         void                          *value;
97         struct _General_Trace_List    *next;
98 } General_Trace_List;
99
100 extern General_Trace_List  *thread_trace_list;
101 extern Mutex                general_trace_lists_access_mutex;
102
103 extern FILE               *trace_fp;
104
105 extern int                 trace_api_flag;
106 extern int                 trace_api_all_flag;
107 extern int                 trace_api_frame_flag;
108 extern int                 trace_mem_flag;
109 extern int                 trace_mem_all_flag;
110 extern int                 trace_ctx_flag;
111 extern int                 trace_ctx_force_flag;
112 extern int                 trace_state_flag;
113 extern int                 trace_surface_flag;
114 extern int                 trace_surface_sequence_sort_flag;
115 extern int                 trace_surface_filter_period_begin;
116 extern int                 trace_surface_filter_period_end;
117 extern int                 trace_surface_filter_type;
118 extern int                 trace_surface_filter_handle;
119 extern int                 trace_surface_filter_size_w;
120 extern int                 trace_surface_filter_size_h;
121 extern int                 trace_surface_print_only_flag;
122
123 #define USE_TRACEPATH           (trace_api_flag == 1 || trace_ctx_flag == 1 || trace_state_flag == 1 || trace_mem_flag == 1 || trace_surface_flag == 1)
124
125 // Environment functions
126 extern const char         *get_env_setting(const char *name);
127
128 // Main utility functions
129 extern int                 init_new_thread_state();
130
131 // Thread functions
132 extern int                 mutex_lock(Mutex *mt);
133 extern int                 mutex_unlock(Mutex *mt);
134 extern int                 get_current_thread();
135 extern int                 set_current_thread_state(GLThreadState *tstate);
136 extern GLThreadState      *get_current_thread_state();
137
138
139 // Override functions
140 extern void                init_export();
141 extern void                deinit_export();
142
143 // Module interfaces
144 extern void                init_modules();
145 extern void                deinit_modules();
146 extern void                reset_modules_override();
147 extern void                init_modules_tstate(GLThreadState *tstate);
148 extern void                deinit_modules_tstate(GLThreadState *tstate);
149
150
151 // Debug & Trace functions
152 extern int                 add_to_general_trace_list(General_Trace_List **gtl, void *value);
153 extern int                 remove_from_general_trace_list(General_Trace_List **gtl, void *value);
154
155 #endif // COREGL_INTERNAL_H
156