aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/wnd/wndclass/ddrawwnd.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/wnd/wndclass/ddrawwnd.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/wnd/wndclass/ddrawwnd.h')
-rw-r--r--Src/Wasabi/api/wnd/wndclass/ddrawwnd.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wnd/wndclass/ddrawwnd.h b/Src/Wasabi/api/wnd/wndclass/ddrawwnd.h
new file mode 100644
index 00000000..3863131c
--- /dev/null
+++ b/Src/Wasabi/api/wnd/wndclass/ddrawwnd.h
@@ -0,0 +1,60 @@
+#ifndef __DDRAWWND_H
+#define __DDRAWWND_H
+
+#include <ddraw.h>
+#include "../bfc/basewnd.h"
+
+class DDSurfaceCanvas;
+class DDrawWnd;
+class api_region;
+
+#define DDRAWWND_PARENT BaseWnd
+
+class NOVTABLE DDrawWnd : public DDRAWWND_PARENT {
+
+public:
+
+ DDrawWnd();
+ virtual ~DDrawWnd();
+
+ virtual int virtualBeforePaint(api_region *r);
+ virtual int virtualAfterPaint(api_region *r);
+
+ virtual void virtualCanvasCommit(Canvas *canvas, RECT *r, double ratio);
+
+ virtual Canvas *createFrameBuffer(int w, int h);
+ virtual void deleteFrameBuffer(Canvas *canvas);
+
+ virtual int onInit();
+
+ virtual void invalidate();
+ virtual void invalidateRect(RECT *r);
+ virtual void invalidateRgn(api_region *rgn);
+ virtual void validate();
+ virtual void validateRect(RECT *r);
+ virtual void validateRgn(api_region *rgn);
+
+private:
+
+ void initDDraw();
+ void startThread();
+ void stopThread();
+
+ LPDIRECTDRAW m_lpDD;
+ LPDIRECTDRAWSURFACE m_lpRenderSurf, m_lpPrimSurf;
+
+ DDSurfaceCanvas *fb_canvas;
+ int w, h;
+ LPDIRECTDRAWCLIPPER lpClipper;
+ static int allow_dd;
+ static int sleep_val;
+ static CRITICAL_SECTION cs;
+ static HANDLE thread;
+ static int quitthread;
+ static PtrList<DDrawWnd> ddlist;
+
+ static unsigned int WINAPI renderThread(void *);
+};
+
+#endif
+