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:
342af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    void writeCommand(int level, const char* label);
352af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    void outputCommands(FILE *file);
369c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
379c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    bool isEmpty() {
389c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase        return (mStart == mEnd);
399c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase    }
409c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
412af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    struct OpLog {
422af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik        int level;
432af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik        const char* label;
442af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    };
452af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik
469c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haaseprivate:
472af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    OpLog* mBufferFirst; // where the memory starts
482af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    OpLog* mStart;       // where the current command stream starts
492af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    OpLog* mEnd;         // where the current commands end
502af4635e4a9e448a65ff541252f8f94bc6ac48e0Chris Craik    OpLog* mBufferLast;  // where the buffer memory ends
519c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
529c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase};
539c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
549c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase}; // namespace uirenderer
559c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase}; // namespace android
569c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase
579c1e23baf5bfbebd1aebbd6d9a18c225325567ceChet Haase#endif // ANDROID_HWUI_DISPLAY_LIST_LOG_BUFFER_H
58