BootAnimation.h revision bc7261130a51dc9f3461d3970eee1b923bcbf193
12580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi/*
22580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * Copyright (C) 2007 The Android Open Source Project
32580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi *
42580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License");
52580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * you may not use this file except in compliance with the License.
62580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * You may obtain a copy of the License at
72580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi *
82580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi *      http://www.apache.org/licenses/LICENSE-2.0
92580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi *
102580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * Unless required by applicable law or agreed to in writing, software
112580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS,
122580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * See the License for the specific language governing permissions and
142580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi * limitations under the License.
152580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi */
162580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
17e19b1ac57c116c8592d64a83b1f1484a5b1898edJorim Jaggi#ifndef ANDROID_BOOTANIMATION_H
182580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#define ANDROID_BOOTANIMATION_H
192580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
202580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <stdint.h>
212580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <sys/types.h>
222580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
232580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <utils/threads.h>
242580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <utils/AssetManager.h>
252580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
262580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <ui/ISurfaceComposer.h>
272580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <ui/SurfaceComposerClient.h>
282580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
292580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <EGL/egl.h>
302580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi#include <GLES/gl.h>
312580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
322580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggiclass SkBitmap;
332580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
342580a976ec93a01ed00fae51364ad872bc591d95Jorim Jagginamespace android {
352580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
362580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggiclass AssetManager;
372580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
382580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi// ---------------------------------------------------------------------------
392580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
402580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggiclass BootAnimation : public Thread, public IBinder::DeathRecipient
412580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi{
422580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggipublic:
432580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi                BootAnimation();
442580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi    virtual     ~BootAnimation();
452580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
462580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi    sp<SurfaceComposerClient> session() const;
472580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi
482580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggiprivate:
492580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi    virtual bool        threadLoop();
502580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi    virtual status_t    readyToRun();
512580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi    virtual void        onFirstRef();
52    virtual void        binderDied(const wp<IBinder>& who);
53
54    struct Texture {
55        GLint   w;
56        GLint   h;
57        GLuint  name;
58    };
59
60    status_t initTexture(Texture* texture, AssetManager& asset, const char* name);
61    bool android();
62
63    sp<SurfaceComposerClient>       mSession;
64    AssetManager mAssets;
65    Texture     mAndroid[2];
66    int         mWidth;
67    int         mHeight;
68    EGLDisplay  mDisplay;
69    EGLDisplay  mContext;
70    EGLDisplay  mSurface;
71    sp<SurfaceControl> mFlingerSurfaceControl;
72    sp<Surface> mFlingerSurface;
73};
74
75// ---------------------------------------------------------------------------
76
77}; // namespace android
78
79#endif // ANDROID_BOOTANIMATION_H
80