MinikinInternal.h revision fb0d396929e534a3686469b474d4f670864aa5ac
1b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien/* 2b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * Copyright (C) 2014 The Android Open Source Project 3b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * 4b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * Licensed under the Apache License, Version 2.0 (the "License"); 5b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * you may not use this file except in compliance with the License. 6b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * You may obtain a copy of the License at 7b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * 8b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * http://www.apache.org/licenses/LICENSE-2.0 9b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * 10b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * Unless required by applicable law or agreed to in writing, software 11b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * distributed under the License is distributed on an "AS IS" BASIS, 12b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * See the License for the specific language governing permissions and 14b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien * limitations under the License. 15b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien */ 16b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 17b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien// Definitions internal to Minikin 18b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 19b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien#ifndef MINIKIN_INTERNAL_H 20b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien#define MINIKIN_INTERNAL_H 21b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 22b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien#include <utils/Mutex.h> 23b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 24b80c1f19c58b927820a8a24bf2218e5645724608Raph Leviennamespace android { 25b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 26b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien// All external Minikin interfaces are designed to be thread-safe. 27b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien// Presently, that's implemented by through a global lock, and having 28b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien// all external interfaces take that lock. 29b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 30b80c1f19c58b927820a8a24bf2218e5645724608Raph Levienextern Mutex gMinikinLock; 31b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 32fb0d396929e534a3686469b474d4f670864aa5acSeigo Nonaka// Aborts if gMinikinLock is not acquired. Do nothing on the release build. 33fb0d396929e534a3686469b474d4f670864aa5acSeigo Nonakavoid assertMinikinLocked(); 34fb0d396929e534a3686469b474d4f670864aa5acSeigo Nonaka 35b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien} 36b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien 37b80c1f19c58b927820a8a24bf2218e5645724608Raph Levien#endif // MINIKIN_INTERNAL_H 38