diff options
author | Ashish Gupta <ashmew2@gmail.com> | 2017-04-21 23:18:15 +0200 |
---|---|---|
committer | Ashish Gupta <ashmew2@gmail.com> | 2017-06-10 08:25:29 +0200 |
commit | dbe64238302aab07de75d520f9a85fa2856e8ce7 (patch) | |
tree | 7380272e351b5f146c9331a712978c95502434f6 /frontends/kolibrios/fb | |
parent | efdd93541042bcae19fb09d56d2a0a61252d0fd2 (diff) | |
download | netsurf-dbe64238302aab07de75d520f9a85fa2856e8ce7.tar.gz netsurf-dbe64238302aab07de75d520f9a85fa2856e8ce7.tar.bz2 |
Move port for kolibrios ahead.
Look at diff from master and reconcile.
Diffstat (limited to 'frontends/kolibrios/fb')
-rw-r--r-- | frontends/kolibrios/fb/framebuffer.c | 5 | ||||
-rw-r--r-- | frontends/kolibrios/fb/gui.c | 84 |
2 files changed, 58 insertions, 31 deletions
diff --git a/frontends/kolibrios/fb/framebuffer.c b/frontends/kolibrios/fb/framebuffer.c index eae6a0605..5b209f46a 100644 --- a/frontends/kolibrios/fb/framebuffer.c +++ b/frontends/kolibrios/fb/framebuffer.c @@ -581,13 +581,8 @@ framebuffer_initialise(const char *fename, int width, int height, int bpp) return NULL; } - fprintf(stderr, "Our: %s\n", fename); - - __asm__ __volatile__("int3"); - fbtype = nsfb_type_from_name(fename); if (fbtype == NSFB_SURFACE_NONE) { - fprintf(stderr, "Got fucked here because nsfb_type_from_name failed for : %s\n", fename); LOG("The %s surface is not available from libnsfb\n", fename); return NULL; } diff --git a/frontends/kolibrios/fb/gui.c b/frontends/kolibrios/fb/gui.c index ab2b9812f..453ade67f 100644 --- a/frontends/kolibrios/fb/gui.c +++ b/frontends/kolibrios/fb/gui.c @@ -23,6 +23,7 @@ #include <string.h> #include <stdbool.h> #include <stdlib.h> +#include <unistd.h> #include <nsutils/time.h> #include <libnsfb.h> @@ -57,6 +58,11 @@ #define NSFB_TOOLBAR_DEFAULT_LAYOUT "blfsrutc" +/* #undef LOG */ +/* #define LOG(format, args...) \ */ +/* debug_board_printf(format, ##args); \ */ +/* debug_board_printf("\n"); \ */ + fbtk_widget_t *fbtk; static bool fb_complete = false; @@ -457,11 +463,11 @@ static const char *feurl; static bool process_cmdline(int argc, char** argv) { - int opt; - int option_index; - static struct option long_options[] = { - {0, 0, 0, 0 } - }; /* no long options */ + /* int opt; */ + /* int option_index; */ + /* static struct option long_options[] = { */ + /* {0, 0, 0, 0 } */ + /* }; /\* no long options *\/ */ LOG("argc %d, argv %p", argc, argv); @@ -484,6 +490,8 @@ process_cmdline(int argc, char** argv) feurl = NETSURF_HOMEPAGE; } + /* NS on KolibriOS does not support option parsing (yet) */ + /* while((opt = getopt_long(argc, argv, "f:b:w:h:", */ /* long_options, &option_index)) != -1) { */ /* switch (opt) { */ @@ -519,7 +527,7 @@ process_cmdline(int argc, char** argv) } /** - * Set option defaults for framebuffer frontend + * Set option defaults for kolibrios framebuffer frontend * * @param defaults The option table to update. * @return error status. @@ -586,6 +594,8 @@ static void framebuffer_run(void) nsfb_event_t event; int timeout; /* timeout in miliseconds */ + LOG("framebuffer_run() executing!"); + while (fb_complete != true) { /* run the scheduler and discover how long to wait for * the next event. @@ -1232,9 +1242,6 @@ create_toolbar(struct gui_window *gw, (*itmtype != 0) && (xdir !=0)) { - LOG("toolbar adding %c", *itmtype); - - switch (*itmtype) { case 'b': /* back */ @@ -1383,8 +1390,6 @@ create_toolbar(struct gui_window *gw, xpos += (xdir * (fbtk_get_width(widget) + padding)); } - LOG("xpos is %d", xpos); - itmtype += xdir; } @@ -1640,6 +1645,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width) /* fill bottom right area */ if (nsoption_bool(fb_osk) == true) { + widget = fbtk_create_text_button(gw->window, fbtk_get_width(gw->window) - furniture_width, fbtk_get_height(gw->window) - furniture_width, @@ -1648,6 +1654,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width) FB_FRAME_COLOUR, FB_COLOUR_BLACK, fb_osk_click, NULL); + widget = fbtk_create_button(gw->window, fbtk_get_width(gw->window) - furniture_width, fbtk_get_height(gw->window) - furniture_width, @@ -1657,7 +1664,9 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width) &osk_image, fb_osk_click, NULL); + } else { + widget = fbtk_create_fill(gw->window, fbtk_get_width(gw->window) - furniture_width, fbtk_get_height(gw->window) - furniture_width, @@ -1671,6 +1680,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width) gw->bottom_right = widget; /* create vertical scrollbar */ + gw->vscroll = fbtk_create_vscroll(gw->window, fbtk_get_width(gw->window) - furniture_width, toolbar_height, @@ -2090,6 +2100,7 @@ main(int argc, char** argv) nsurl *url; nserror ret; nsfb_t *nsfb; + struct netsurf_table framebuffer_table = { .misc = &framebuffer_misc_table, .window = &framebuffer_window_table, @@ -2100,23 +2111,43 @@ main(int argc, char** argv) .layout = framebuffer_layout_table, }; - ret = netsurf_register(&framebuffer_table); - if (ret != NSERROR_OK) { - die("NetSurf operation table failed registration"); - } - - respaths = fb_init_resource(NETSURF_FB_RESPATH":"NETSURF_FB_FONTPATH); - - /* initialise logging. Not fatal if it fails but not much we - * can do about it either. - */ - nslog_init(nslog_stream_configure, &argc, argv); + ret = netsurf_register(&framebuffer_table); + if (ret != NSERROR_OK) { + die("NetSurf operation table failed registration"); + } + + /* The only restriction is that the kolibrios netsurf binary should be in the same + directory as another "res" directory */ + /* On Kolibrios, argv[0] is the absolute path to the binary */ + char *respath = strdup(argv[0]); + int i; + for(i = strlen(respath) - 1; i > 0; i--) { + if(respath[i] == '/') { + respath[i+1] = 'r'; + respath[i+2] = 'e'; + respath[i+3] = 's'; + respath[i+4] = '\0'; + break; + } + } + assert(i!=0); + + debug_board_printf(" --- argv[0] : %s\n\n", argv[0]); + debug_board_printf(" --- respath : %s\n\n", respath); + respaths = fb_init_resource(respath); + + /* initialise logging. Abort on failure for KolibriOS. */ + ret = nslog_init(nslog_stream_configure, &argc, argv); + if (ret != NSERROR_OK) { + die("Logging failed to initialise. This is required to run on KolibriOS."); + } /* user options setup */ ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default); if (ret != NSERROR_OK) { die("Options failed to initialise"); } + options = filepath_find(respaths, "Choices"); nsoption_read(options, nsoptions); free(options); @@ -2165,19 +2196,19 @@ main(int argc, char** argv) urldb_load_cookies(nsoption_charp(cookie_file)); /* create an initial browser window */ - - LOG("calling browser_window_create"); + LOG("calling browser_window_create with Size(hxw)=%dx%d\n", feheight, fewidth); + LOG("calling browser_window_create with URL=%s\n", feurl); ret = nsurl_create(feurl, &url); if (ret == NSERROR_OK) { - ret = browser_window_create(BW_CREATE_HISTORY, + + ret = browser_window_create(BW_CREATE_HISTORY, url, NULL, NULL, &bw); nsurl_unref(url); } - if (ret != NSERROR_OK) { fb_warn_user(messages_get_errorcode(ret), 0); } else { @@ -2230,3 +2261,4 @@ void gui_resize(fbtk_widget_t *root, int width, int height) * c-basic-offset:8 * End: */ + |