• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /* trace debugging */
18 
19 #include "sles_allinclusive.h"
20 
21 #ifdef USE_TRACE
22 
23 // This should be the only global variable
24 static unsigned slTraceEnabled = SL_TRACE_DEFAULT;
25 
26 
slTraceSetEnabled(unsigned enabled)27 void slTraceSetEnabled(unsigned enabled)
28 {
29     slTraceEnabled = enabled;
30 }
31 
32 
slTraceEnterGlobal(const char * function)33 void slTraceEnterGlobal(const char *function)
34 {
35     if (SL_TRACE_ENTER & slTraceEnabled) {
36         SL_LOGD("Entering %s", function);
37     }
38 }
39 
40 
slTraceLeaveGlobal(const char * function,SLresult result)41 void slTraceLeaveGlobal(const char *function, SLresult result)
42 {
43     if (SL_RESULT_SUCCESS == result) {
44         if (SL_TRACE_LEAVE_SUCCESS & slTraceEnabled) {
45             SL_LOGD("Leaving %s", function);
46         }
47     } else {
48         if (SL_TRACE_LEAVE_FAILURE & slTraceEnabled) {
49             const char *str = slesutResultToString(result);
50             if (NULL != str) {
51                 SL_LOGW("Leaving %s (%s)", function, str);
52             } else {
53                 SL_LOGW("Leaving %s (0x%X)", function, result);
54             }
55         }
56     }
57 }
58 
59 
slTraceEnterInterface(const char * function)60 void slTraceEnterInterface(const char *function)
61 {
62     if (!(SL_TRACE_ENTER & slTraceEnabled)) {
63         return;
64     }
65     if (*function == 'I') {
66         ++function;
67     }
68     const char *underscore = function;
69     while (*underscore != '\0') {
70         if (*underscore == '_') {
71             if (/*(strcmp(function, "BufferQueue_Enqueue") &&
72                 strcmp(function, "BufferQueue_GetState") &&
73                 strcmp(function, "OutputMixExt_FillBuffer")) &&*/
74                 true) {
75                 SL_LOGD("Entering %.*s::%s", (int) (underscore - function), function,
76                     &underscore[1]);
77             }
78             return;
79         }
80         ++underscore;
81     }
82     SL_LOGV("Entering %s", function);
83 }
84 
85 
slTraceLeaveInterface(const char * function,SLresult result)86 void slTraceLeaveInterface(const char *function, SLresult result)
87 {
88     if (!((SL_TRACE_LEAVE_SUCCESS | SL_TRACE_LEAVE_FAILURE) & slTraceEnabled)) {
89         return;
90     }
91     if (*function == 'I') {
92         ++function;
93     }
94     const char *underscore = function;
95     while (*underscore != '\0') {
96         if (*underscore == '_') {
97             break;
98         }
99         ++underscore;
100     }
101     if (SL_RESULT_SUCCESS == result) {
102         if (SL_TRACE_LEAVE_SUCCESS & slTraceEnabled) {
103             if (*underscore == '_') {
104                 SL_LOGD("Leaving %.*s::%s", (int) (underscore - function), function,
105                     &underscore[1]);
106             } else {
107                 SL_LOGD("Leaving %s", function);
108             }
109         }
110     } else {
111         if (SL_TRACE_LEAVE_FAILURE & slTraceEnabled) {
112             const char *str = slesutResultToString(result);
113             if (*underscore == '_') {
114                 if (NULL != str) {
115                     SL_LOGW("Leaving %.*s::%s (%s)", (int) (underscore - function), function,
116                         &underscore[1], str);
117                 } else {
118                     SL_LOGW("Leaving %.*s::%s (0x%X)", (int) (underscore - function), function,
119                         &underscore[1], result);
120                 }
121             } else {
122                 if (NULL != str) {
123                     SL_LOGW("Leaving %s (%s)", function, str);
124                 } else {
125                     SL_LOGW("Leaving %s (0x%X)", function, result);
126                 }
127             }
128         }
129     }
130 }
131 
132 
slTraceEnterInterfaceVoid(const char * function)133 void slTraceEnterInterfaceVoid(const char *function)
134 {
135     if (SL_TRACE_ENTER & slTraceEnabled) {
136         slTraceEnterInterface(function);
137     }
138 }
139 
140 
slTraceLeaveInterfaceVoid(const char * function)141 void slTraceLeaveInterfaceVoid(const char *function)
142 {
143     if (SL_TRACE_LEAVE_VOID & slTraceEnabled) {
144         slTraceLeaveInterface(function, SL_RESULT_SUCCESS);
145     }
146 }
147 
148 #else
149 
slTraceSetEnabled(unsigned enabled)150 void slTraceSetEnabled(unsigned enabled)
151 {
152 }
153 
154 #endif // USE_TRACE
155