1 /* 2 * Copyright (C) 2011 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 #ifndef __handlers_h 18 #define __handlers_h 19 20 #define IObject struct Object_interface 21 IObject; 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 extern unsigned handler_MediaPlayer_gain(IObject *thiz); 28 #ifdef ANDROID 29 extern unsigned handler_MediaPlayer_transport(IObject *thiz); 30 extern unsigned handler_MediaPlayer_position(IObject *thiz); 31 extern unsigned handler_MediaPlayer_abq_enqueue(IObject *thiz); 32 extern unsigned handler_MediaPlayer_play_state(IObject *thiz); 33 extern unsigned handler_AudioPlayer_gain(IObject *thiz); 34 extern unsigned handler_AudioPlayer_transport(IObject *thiz); 35 extern unsigned handler_AudioPlayer_position(IObject *thiz); 36 extern unsigned handler_AudioPlayer_bq_enqueue(IObject *thiz); 37 extern unsigned handler_AudioPlayer_abq_enqueue(IObject *thiz); 38 extern unsigned handler_AudioPlayer_play_state(IObject *thiz); 39 extern unsigned handler_AudioRecorder_transport(IObject *thiz); 40 extern unsigned handler_MidiPlayer_gain(IObject *thiz); 41 extern unsigned handler_MidiPlayer_position(IObject *thiz); 42 extern unsigned handler_OutputMix_gain(IObject *thiz); 43 #else 44 #define handler_MediaPlayer_gain NULL 45 #define handler_MediaPlayer_transport NULL 46 #define handler_MediaPlayer_position NULL 47 #define handler_MediaPlayer_abq_enqueue NULL 48 #define handler_MediaPlayer_play_state NULL 49 #define handler_AudioPlayer_transport NULL 50 #define handler_AudioPlayer_position NULL 51 #define handler_AudioPlayer_bq_enqueue NULL 52 #define handler_AudioPlayer_abq_enqueue NULL 53 #define handler_AudioPlayer_play_state NULL 54 #define handler_AudioRecorder_transport NULL 55 #define handler_MidiPlayer_gain NULL 56 #define handler_MidiPlayer_position NULL 57 #define handler_OutputMix_gain NULL 58 #endif 59 60 #ifdef __cplusplus 61 } 62 #endif 63 64 65 /* Table entry for an attribute update handler. 66 * 67 * If the Object ID table index matches the object's ID, and the attribute table index 68 * match any of the updated attributes, then the specified handler 69 * is called. The handler is called with the object's mutex locked, 70 * and should return with mutex locked. The handler returns a bitmask of the attributes which 71 * were actually handled. This is normally the same as the attribute index, 72 * but could be a subset (including 0) if the handler discovers that the 73 * update is too complex to be handled synchronously and so must 74 * be deferred to the sync thread. Note that this direct lookup table organization 75 * gives O(1) search. 76 */ 77 78 typedef unsigned (*AttributeHandler)(IObject *thiz); 79 80 extern const AttributeHandler handlerTable[][ATTR_INDEX_MAX]; 81 82 #undef IObject 83 84 #endif // !defined(__handlers_h) 85