19c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase/*
29c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * Copyright (C) 2011 The Android Open Source Project
39c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase *
49c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * Licensed under the Apache License, Version 2.0 (the "License");
59c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * you may not use this file except in compliance with the License.
69c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * You may obtain a copy of the License at
79c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase *
89c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase *      http://www.apache.org/licenses/LICENSE-2.0
99c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase *
109c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * Unless required by applicable law or agreed to in writing, software
119c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * distributed under the License is distributed on an "AS IS" BASIS,
129c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * See the License for the specific language governing permissions and
149c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase * limitations under the License.
159c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase */
169c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
179c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase#ifndef ANDROID_HWUI_DISPLAY_LIST_LOG_BUFFER_H
189c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase#define ANDROID_HWUI_DISPLAY_LIST_LOG_BUFFER_H
199c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
209c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase#include <utils/Singleton.h>
217953745dd565167113f8cbfc461bc0521d32d870Romain Guy
229c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase#include <stdio.h>
239c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
249c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haasenamespace android {
259c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haasenamespace uirenderer {
269c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
279c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haaseclass DisplayListLogBuffer: public Singleton<DisplayListLogBuffer> {
289c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    DisplayListLogBuffer();
299c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    ~DisplayListLogBuffer();
309c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
319c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    friend class Singleton<DisplayListLogBuffer>;
329c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
339c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haasepublic:
349c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    void writeCommand(int level, int op);
359c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    void writeInt(int value);
369c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    void outputCommands(FILE *file, const char* opNames[]);
379c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
389c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    bool isEmpty() {
399c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase        return (mStart == mEnd);
409c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    }
419c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
429c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haaseprivate:
439c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    int *mBufferFirst; // where the memory starts
449c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    int* mStart;       // where the current command stream starts
459c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    int* mEnd;         // where the current commands end
469c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    int* mBufferLast;  // where the buffer memory ends
479c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
489c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase};
499c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
509c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase}; // namespace uirenderer
519c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase}; // namespace android
529c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
539c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase#endif // ANDROID_HWUI_DISPLAY_LIST_LOG_BUFFER_H
54