-
This commit is contained in:
@@ -27,127 +27,56 @@ Rktwebview_qt *handler = nullptr;
|
||||
|
||||
void rkt_webview_init()
|
||||
{
|
||||
/*
|
||||
if (!started) {
|
||||
if (pipe(pipefd) != -1) {
|
||||
webview_process = fork();
|
||||
|
||||
if (webview_process < 0)
|
||||
cannot_fork_or_pipe = true;
|
||||
} else if (webview_process == 0) {
|
||||
WebViewApp app;
|
||||
|
||||
|
||||
|
||||
started = true;
|
||||
} else {
|
||||
cannot_fork_or_pipe = true;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if (handler == nullptr) {
|
||||
handler = new Rktwebview_qt(&handler);
|
||||
}
|
||||
}
|
||||
|
||||
int rkt_webview_create(int parent, void (*js_event_cb)(const char *))
|
||||
int rkt_webview_create(rktwebview_t parent, event_cb_t js_event_cb)
|
||||
{
|
||||
rkt_webview_init();
|
||||
return handler->rktWebViewCreate(parent, js_event_cb);
|
||||
}
|
||||
|
||||
void rkt_webview_close(int wv)
|
||||
void rkt_webview_close(rktwebview_t wv)
|
||||
{
|
||||
rkt_webview_init();
|
||||
handler->rktWebViewClose(wv);
|
||||
}
|
||||
|
||||
result_t rkt_webview_set_url(int wv, const char *url)
|
||||
result_t rkt_webview_set_url(rktwebview_t wv, const char *url)
|
||||
{
|
||||
rkt_webview_init();
|
||||
result_t r = handler->rktSetUrl(wv, url);
|
||||
return r;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Supporting functions
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
void queue_init(queue_t **q)
|
||||
result_t rkt_webview_set_html(rktwebview_t wv, const char *url)
|
||||
{
|
||||
*q = static_cast<queue_t *>(malloc(sizeof(queue_t)));
|
||||
queue_t *Q = *q;
|
||||
Q->length = 0;
|
||||
Q->first = nullptr;
|
||||
Q->last = nullptr;
|
||||
}
|
||||
|
||||
void enqueue(queue_t *q, item_t item)
|
||||
{
|
||||
queue_item_t *itm = (queue_item_t *) malloc(sizeof(queue_item_t));
|
||||
itm->item.context = item.context;
|
||||
itm->item.data = strdup(item.data);
|
||||
if (q->first == nullptr) {
|
||||
q->first = itm;
|
||||
q->last = itm;
|
||||
itm->prev = nullptr;
|
||||
itm->next = nullptr;
|
||||
q->length = 1;
|
||||
} else {
|
||||
itm->prev = q->last;
|
||||
itm->next = nullptr;
|
||||
q->last->next = itm;
|
||||
q->last = itm;
|
||||
q->length += 1;
|
||||
}
|
||||
}
|
||||
|
||||
bool dequeue(queue_t *q, item_t *item)
|
||||
{
|
||||
if (q->length == 0) {
|
||||
item->context = CONTEXT_INVALID;
|
||||
item->data = nullptr;
|
||||
return false;
|
||||
} else {
|
||||
queue_item_t *itm = q->first;
|
||||
q->first = q->first->next;
|
||||
q->length -= 1;
|
||||
if (q->length == 0) {
|
||||
q->first = nullptr;
|
||||
q->last = nullptr;
|
||||
}
|
||||
item->context = itm->item.context;
|
||||
item->data = itm->item.data;
|
||||
free(itm);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
int queue_length(queue_t *q)
|
||||
{
|
||||
return q->length;
|
||||
}
|
||||
|
||||
void queue_destroy(queue_t *q)
|
||||
{
|
||||
item_t i;
|
||||
while(dequeue(q, &i)) {
|
||||
free(i.data);
|
||||
}
|
||||
free(q);
|
||||
}
|
||||
|
||||
void free_item(item_t item)
|
||||
{
|
||||
free(item.data);
|
||||
rkt_webview_init();
|
||||
result_t r = handler->rktSetHtml(wv, url);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
result_t rkt_webview_run_js(rktwebview_t wv, const char *js)
|
||||
{
|
||||
rkt_webview_init();
|
||||
result_t r = handler->rktRunJs(wv, js);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
result_t rkt_webview_open_devtools(rktwebview_t wv)
|
||||
{
|
||||
rkt_webview_init();
|
||||
result_t r = handler->rktOpenDevtools(wv);
|
||||
return r;
|
||||
}
|
||||
|
||||
void rkt_webview_process_events(int for_ms)
|
||||
{
|
||||
//rkt_webview_init();
|
||||
rkt_webview_init();
|
||||
|
||||
int64_t start_ms = current_ms();
|
||||
int64_t end_ms = start_ms + for_ms;
|
||||
@@ -157,3 +86,35 @@ void rkt_webview_process_events(int for_ms)
|
||||
handler->doEvents();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
result_t rkt_webview_destroy_event(rkt_event_t *e)
|
||||
{
|
||||
free(e->event);
|
||||
free(e);
|
||||
return result_t::oke;
|
||||
}
|
||||
|
||||
result_t rkt_webview_move(rktwebview_t wv, int x, int y)
|
||||
{
|
||||
rkt_webview_init();
|
||||
|
||||
result_t r = handler->rktMove(wv, x, y);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
result_t rkt_webview_resize(rktwebview_t wv, int width, int height)
|
||||
{
|
||||
rkt_webview_init();
|
||||
|
||||
result_t r = handler->rktResize(wv, width, height);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
bool rkt_webview_valid(rktwebview_t wv)
|
||||
{
|
||||
rkt_webview_init();
|
||||
return handler->rktValid(wv);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user