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 21IObject; 22 23#ifdef __cplusplus 24extern "C" { 25#endif 26 27extern unsigned handler_MediaPlayer_gain(IObject *thiz); 28#ifdef ANDROID 29extern unsigned handler_MediaPlayer_transport(IObject *thiz); 30extern unsigned handler_MediaPlayer_position(IObject *thiz); 31extern unsigned handler_MediaPlayer_abq_enqueue(IObject *thiz); 32extern unsigned handler_MediaPlayer_play_state(IObject *thiz); 33extern unsigned handler_AudioPlayer_gain(IObject *thiz); 34extern unsigned handler_AudioPlayer_transport(IObject *thiz); 35extern unsigned handler_AudioPlayer_position(IObject *thiz); 36extern unsigned handler_AudioPlayer_bq_enqueue(IObject *thiz); 37extern unsigned handler_AudioPlayer_abq_enqueue(IObject *thiz); 38extern unsigned handler_AudioPlayer_play_state(IObject *thiz); 39extern unsigned handler_AudioRecorder_transport(IObject *thiz); 40extern unsigned handler_MidiPlayer_gain(IObject *thiz); 41extern unsigned handler_MidiPlayer_position(IObject *thiz); 42extern 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 78typedef unsigned (*AttributeHandler)(IObject *thiz); 79 80extern const AttributeHandler handlerTable[][ATTR_INDEX_MAX]; 81 82#undef IObject 83 84#endif // !defined(__handlers_h) 85