2 * Copyright (C) 2016 Christian Browet
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
11 #include "threads/Event.h"
12 #include "utils/Geometry.h"
14 #include <androidjni/Context.h>
15 #include <androidjni/JNIBase.h>
16 #include <androidjni/Rect.h>
17 #include <androidjni/Surface.h>
18 #include <androidjni/SurfaceHolder.h>
23 class CJNIXBMCVideoView
: virtual public CJNIBase
, public CJNISurfaceHolderCallback
, public CJNIInterfaceImplem
<CJNIXBMCVideoView
>
26 CJNIXBMCVideoView(const jni::jhobject
&object
);
27 ~CJNIXBMCVideoView() override
= default;
29 static void RegisterNatives(JNIEnv
* env
);
31 static CJNIXBMCVideoView
* createVideoView(CJNISurfaceHolderCallback
* callback
);
33 // CJNISurfaceHolderCallback interface
34 void surfaceChanged(CJNISurfaceHolder holder
, int format
, int width
, int height
) override
;
35 void surfaceCreated(CJNISurfaceHolder holder
) override
;
36 void surfaceDestroyed(CJNISurfaceHolder holder
) override
;
38 static void _surfaceChanged(JNIEnv
* env
, jobject thiz
, jobject holder
, jint format
, jint width
, jint height
);
39 static void _surfaceCreated(JNIEnv
* env
, jobject thiz
, jobject holder
);
40 static void _surfaceDestroyed(JNIEnv
* env
, jobject thiz
, jobject holder
);
42 bool waitForSurface(unsigned int millis
);
43 bool isActive() { return m_surfaceCreated
.Signaled(); }
44 CJNISurface
getSurface();
45 const CRect
& getSurfaceRect();
46 void setSurfaceRect(const CRect
& rect
);
50 bool isCreated() const;
53 CJNISurfaceHolderCallback
* m_callback
= nullptr;
54 CEvent m_surfaceCreated
;
58 CJNIXBMCVideoView() = default;