Clean some things up and add more interface functions
parent
6d195dd484
commit
fd6f47c93c
|
@ -2,18 +2,19 @@
|
||||||
#include "rfb-proto.h"
|
#include "rfb-proto.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "vec.h"
|
#include "vec.h"
|
||||||
|
#include "neatvnc.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <libdrm/drm_fourcc.h>
|
#include <libdrm/drm_fourcc.h>
|
||||||
#include <pixman.h>
|
#include <pixman.h>
|
||||||
|
|
||||||
int read_png_file(struct vnc_framebuffer* fb, const char *filename);
|
int read_png_file(struct nvnc_fb* fb, const char *filename);
|
||||||
|
|
||||||
int run_benchmark(const char *image)
|
int run_benchmark(const char *image)
|
||||||
{
|
{
|
||||||
int rc = -1;
|
int rc = -1;
|
||||||
|
|
||||||
struct vnc_framebuffer fb;
|
struct nvnc_fb fb;
|
||||||
rc = read_png_file(&fb, image);
|
rc = read_png_file(&fb, image);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -34,7 +34,12 @@ struct nvnc *nvnc_open(const char *addr, uint16_t port);
|
||||||
void nvnc_close(struct nvnc *self);
|
void nvnc_close(struct nvnc *self);
|
||||||
|
|
||||||
void nvnc_set_userdata(struct nvnc *self, void* userdata);
|
void nvnc_set_userdata(struct nvnc *self, void* userdata);
|
||||||
void* nvnc_get_userdata(struct nvnc *self);
|
void* nvnc_get_userdata(const struct nvnc *self);
|
||||||
|
|
||||||
|
void nvnc_set_dimensions(struct nvnc *self, uint16_t width, uint16_t height,
|
||||||
|
uint32_t fourcc_format);
|
||||||
|
|
||||||
|
void nvnc_set_name(struct nvnc *self, const char *name);
|
||||||
|
|
||||||
void nvnc_set_key_fn(struct nvnc *self, nvnc_key_fn);
|
void nvnc_set_key_fn(struct nvnc *self, nvnc_key_fn);
|
||||||
void nvnc_set_pointer_fn(struct nvnc *self, nvnc_pointer_fn);
|
void nvnc_set_pointer_fn(struct nvnc *self, nvnc_pointer_fn);
|
||||||
|
|
|
@ -4,12 +4,6 @@
|
||||||
#include <uv.h>
|
#include <uv.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
struct vnc_framebuffer {
|
|
||||||
void *addr;
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct vnc_write_request {
|
struct vnc_write_request {
|
||||||
uv_write_t request;
|
uv_write_t request;
|
||||||
uv_write_cb on_done;
|
uv_write_cb on_done;
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "neatvnc.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <png.h>
|
#include <png.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <libdrm/drm_fourcc.h>
|
||||||
|
|
||||||
int read_png_file(struct vnc_framebuffer* fb, const char *filename) {
|
int read_png_file(struct nvnc_fb* fb, const char *filename) {
|
||||||
int width, height;
|
int width, height;
|
||||||
png_byte color_type;
|
png_byte color_type;
|
||||||
png_byte bit_depth;
|
png_byte bit_depth;
|
||||||
|
@ -77,8 +79,11 @@ int read_png_file(struct vnc_framebuffer* fb, const char *filename) {
|
||||||
png_destroy_read_struct(&png, &info, NULL);
|
png_destroy_read_struct(&png, &info, NULL);
|
||||||
|
|
||||||
fb->addr = addr;
|
fb->addr = addr;
|
||||||
|
fb->size = sizeof(row_bytes * height);
|
||||||
fb->width = width;
|
fb->width = width;
|
||||||
fb->height = height;
|
fb->height = height;
|
||||||
|
fb->fourcc_format = DRM_FORMAT_ARGB8888;
|
||||||
|
fb->fourcc_modifier = DRM_FORMAT_MOD_LINEAR;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
47
src/server.c
47
src/server.c
|
@ -12,6 +12,7 @@
|
||||||
#include <libdrm/drm_fourcc.h>
|
#include <libdrm/drm_fourcc.h>
|
||||||
#include <pixman.h>
|
#include <pixman.h>
|
||||||
|
|
||||||
|
#define DEFAULT_NAME "Neat VNC"
|
||||||
#define READ_BUFFER_SIZE 4096
|
#define READ_BUFFER_SIZE 4096
|
||||||
#define MSG_BUFFER_SIZE 4096
|
#define MSG_BUFFER_SIZE 4096
|
||||||
|
|
||||||
|
@ -58,14 +59,13 @@ struct vnc_display {
|
||||||
uint16_t width;
|
uint16_t width;
|
||||||
uint16_t height;
|
uint16_t height;
|
||||||
uint32_t pixfmt; /* fourcc pixel format */
|
uint32_t pixfmt; /* fourcc pixel format */
|
||||||
char *name;
|
char name[256];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct nvnc {
|
struct nvnc {
|
||||||
uv_tcp_t tcp_handle;
|
uv_tcp_t tcp_handle;
|
||||||
struct vnc_client_list clients;
|
struct vnc_client_list clients;
|
||||||
struct vnc_display display;
|
struct vnc_display display;
|
||||||
struct vnc_framebuffer* fb;
|
|
||||||
void *userdata;
|
void *userdata;
|
||||||
nvnc_key_fn key_fn;
|
nvnc_key_fn key_fn;
|
||||||
nvnc_pointer_fn pointer_fn;
|
nvnc_pointer_fn pointer_fn;
|
||||||
|
@ -685,6 +685,8 @@ struct nvnc *nvnc_open(const char *address, uint16_t port)
|
||||||
if (!self)
|
if (!self)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
strcpy(self->display.name, DEFAULT_NAME);
|
||||||
|
|
||||||
LIST_INIT(&self->clients);
|
LIST_INIT(&self->clients);
|
||||||
|
|
||||||
uv_tcp_init(uv_default_loop(), &self->tcp_handle);
|
uv_tcp_init(uv_default_loop(), &self->tcp_handle);
|
||||||
|
@ -772,7 +774,7 @@ void nvnc_set_userdata(struct nvnc *self, void *userdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT
|
EXPORT
|
||||||
void* nvnc_get_userdata(struct nvnc *self)
|
void* nvnc_get_userdata(const struct nvnc *self)
|
||||||
{
|
{
|
||||||
return self->userdata;
|
return self->userdata;
|
||||||
}
|
}
|
||||||
|
@ -795,31 +797,18 @@ void nvnc_set_fb_req_fn(struct nvnc *self, nvnc_fb_req_fn fn)
|
||||||
self->fb_req_fn = fn;
|
self->fb_req_fn = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_png_file(struct vnc_framebuffer* fb, const char *filename);
|
EXPORT
|
||||||
|
void nvnc_set_dimensions(struct nvnc *self, uint16_t width, uint16_t height,
|
||||||
/*
|
uint32_t fourcc_format)
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
{
|
||||||
if (!argv[1]) {
|
self->display.width = width;
|
||||||
printf("Missing argument\n");
|
self->display.height = height;
|
||||||
return 1;
|
self->display.pixfmt = fourcc_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct vnc_framebuffer fb;
|
EXPORT
|
||||||
if (read_png_file(&fb, argv[1]) < 0) {
|
void nvnc_set_name(struct nvnc *self, const char *name)
|
||||||
printf("Failed to read png file\n");
|
{
|
||||||
return 1;
|
strncpy(self->display.name, name, sizeof(self->display.name));
|
||||||
}
|
self->display.name[sizeof(self->display.name) - 1] = '\0';
|
||||||
|
|
||||||
struct vnc_server server = { 0 };
|
|
||||||
server.fb = &fb;
|
|
||||||
server.display.pixfmt = DRM_FORMAT_XRGB8888;
|
|
||||||
server.display.width = fb.width;
|
|
||||||
server.display.height = fb.height;
|
|
||||||
server.display.name = argv[1];
|
|
||||||
|
|
||||||
vnc_server_init(&server, "127.0.0.1", 5900);
|
|
||||||
|
|
||||||
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
Loading…
Reference in New Issue