Skip to content

Commit

Permalink
Merge branch 'doubleBuffer' into FbDev_vsync
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/backend/Backend.cc
#	src/backend/Backend.h
  • Loading branch information
piranna committed Mar 21, 2020
2 parents aa3a6ae + 8e24861 commit 64fe34b
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 58 deletions.
1 change: 1 addition & 0 deletions binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
'src/backend/Backend.cc',
'src/backend/ImageBackend.cc',
'src/backend/PdfBackend.cc',
'src/backend/ScreenBackend.cc',
'src/backend/SvgBackend.cc',
'src/bmp/BMPParser.cc',
'src/Backends.cc',
Expand Down
46 changes: 0 additions & 46 deletions src/backend/Backend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,6 @@
#include <string>


using Nan::AsyncQueueWorker;
using Nan::AsyncWorker;
using Nan::Callback;


class WaitVSync: public AsyncWorker
{
public:
WaitVSync(Callback* callback, Backend* backend)
: AsyncWorker(callback, "Backend:WaitVSync")
, backend(backend)
{}

void Execute()
{
backend->waitVSync();
}

private:
Backend* backend;
};


Backend::Backend(std::string name, int width, int height)
: name(name)
, format(CAIRO_FORMAT_INVALID)
Expand Down Expand Up @@ -130,29 +107,6 @@ bool Backend::isSurfaceValid(){
}


NAN_METHOD(Backend::swapBuffers)
{
Backend* backend = Nan::ObjectWrap::Unwrap<Backend>(info.This());

backend->swapBuffers();
}

NAN_METHOD(Backend::waitVSync)
{
Backend* backend = Nan::ObjectWrap::Unwrap<Backend>(info.This());

Callback* callback = new Callback(info[0].As<v8::Function>());

AsyncQueueWorker(new WaitVSync(callback, backend));
}

void Backend::Initialize(Local<FunctionTemplate> ctor)
{
Nan::SetPrototypeMethod(ctor, "swapBuffers", swapBuffers);
Nan::SetPrototypeMethod(ctor, "waitVSync", waitVSync);
}


BackendOperationNotAvailable::BackendOperationNotAvailable(Backend* backend,
std::string operation_name)
: backend(backend)
Expand Down
12 changes: 0 additions & 12 deletions src/backend/Backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,12 @@

class Canvas;

using namespace v8;


class Backend : public Nan::ObjectWrap
{
friend class WaitVSync;

private:
const std::string name;
const char* error = NULL;

virtual void swapBuffers(){};
virtual void waitVSync(){};

protected:
int width;
int height;
Expand All @@ -38,7 +30,6 @@ class Backend : public Nan::ObjectWrap

static void init(const Nan::FunctionCallbackInfo<v8::Value> &info);
static Backend *construct(int width, int height){ return nullptr; }
static void Initialize(Local<FunctionTemplate> ctor);

public:
virtual ~Backend();
Expand All @@ -60,9 +51,6 @@ class Backend : public Nan::ObjectWrap

bool isSurfaceValid();
inline const char* getError(){ return error; }

static NAN_METHOD(swapBuffers);
static NAN_METHOD(waitVSync);
};


Expand Down
48 changes: 48 additions & 0 deletions src/backend/ScreenBackend.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#include "ScreenBackend.h"


using Nan::AsyncQueueWorker;
using Nan::AsyncWorker;
using Nan::Callback;


class WaitVSync: public AsyncWorker
{
public:
WaitVSync(Callback* callback, ScreenBackend* backend)
: AsyncWorker(callback, "ScreenBackend:WaitVSync")
, backend(backend)
{}

void Execute()
{
backend->waitVSync();
}

private:
ScreenBackend* backend;
};


NAN_METHOD(ScreenBackend::swapBuffers)
{
ScreenBackend* backend = Nan::ObjectWrap::Unwrap<ScreenBackend>(info.This());

backend->swapBuffers();
}

NAN_METHOD(ScreenBackend::waitVSync)
{
ScreenBackend* backend = Nan::ObjectWrap::Unwrap<ScreenBackend>(info.This());

Callback* callback = new Callback(info[0].As<v8::Function>());

AsyncQueueWorker(new WaitVSync(callback, backend));
}


void ScreenBackend::Initialize(Local<FunctionTemplate> ctor)
{
Nan::SetPrototypeMethod(ctor, "swapBuffers", swapBuffers);
Nan::SetPrototypeMethod(ctor, "waitVSync", waitVSync);
}
22 changes: 22 additions & 0 deletions src/backend/ScreenBackend.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once

#include "Backend.h"


using namespace v8;


class ScreenBackend : public Backend
{
friend class WaitVSync;

private:
virtual void swapBuffers(){};
virtual void waitVSync(){};

static NAN_METHOD(swapBuffers);
static NAN_METHOD(waitVSync);

protected:
static void Initialize(Local<FunctionTemplate> ctor);
};

0 comments on commit 64fe34b

Please sign in to comment.