I've commited this patch and the previous one. I also did a fresh build of
GCCSDK and it completed successfully.
Thanks.
In article
<CAN-tyhQ=8C0azFXiF6vQG9ui3X=aGtQKVKauA8moV0Fk8X2pxg@mail.gmail.com>,
Cameron Cawley <ccawley2011@gmail.com> wrote:
> Hi
> The attached patch updates the URLs used when building the toolchain to use
> HTTPS. It also fixes a broken link for libmpc, which required updating it
> from 0.8.2 to 1.1.0.
> Regards
_______________________________________________
GCCSDK mailing list gcc@gccsdk.riscos.info
Bugzilla: http://www.riscos.info/bugzilla/index.cgi
List Info: http://www.riscos.info/mailman/listinfo/gcc
Main Page: http://www.riscos.info/index.php/GCCSDK
Sunday, 29 September 2019
Wednesday, 25 September 2019
[gccsdk] Patch to fix the URLs used when building the toolchain
Hi
The attached patch updates the URLs used when building the toolchain to use HTTPS. It also fixes a broken link for libmpc, which required updating it from 0.8.2 to 1.1.0.
Regards
Re: Google and #spf
On Mon, Sep 23, 2019 at 03:27:59PM +0100, Jim Nagel wrote:
> Sure makes one wish for that "Javasccript on/off" button on the Netsurf
> button bar that we've oft wished for!
Please remember that there is no RISC OS front end maintainer for
NetSurf anymore - nobody is working on the RISC OS front end beyond
making it build with core changes. If anyone wants to volunteer for
this please step forward! Some people have expressed interest in the
past but have either vanished or discovered they did not have the spare
time they thought.
B.
> Sure makes one wish for that "Javasccript on/off" button on the Netsurf
> button bar that we've oft wished for!
Please remember that there is no RISC OS front end maintainer for
NetSurf anymore - nobody is working on the RISC OS front end beyond
making it build with core changes. If anyone wants to volunteer for
this please step forward! Some people have expressed interest in the
past but have either vanished or discovered they did not have the spare
time they thought.
B.
Tuesday, 24 September 2019
Re: Unicode question
In message <6ebd88f857.boase@boase.myzen.co.uk>
Bernard Boase <b.boase@bcs.org> wrote:
> I have similar settings for Netsurf on Iyonix and ARMX6 and, for
> example, a UTF-8 encoded file of Cyrillic characters displays
> correctly on both. But Wikipedia's nav bar language lists differ.
>
> Having deleted RUfl_cache, Iyonix shows all correctly except Georgian
>
> ARMX6 showed all correctly except
> Korean, Japanese, Thai and Chinese
> until I deleted RUfl_cache, and now shows none of the non-Latin scripts.
>
> Why the differences?
Can't help here.
> Indeed how come only Acorn fonts are apparently
> needed in Netsurf Choices?
This is because the fonts you specify are defaults - what to use if the
web page doesn't include font information. Consequently, it only needs
8-bit fonts.
--
Nick Roberts tigger @ orpheusinternet.co.uk
Hanlon's Razor: Never attribute to malice that which
can be adequately explained by stupidity.
Bernard Boase <b.boase@bcs.org> wrote:
> I have similar settings for Netsurf on Iyonix and ARMX6 and, for
> example, a UTF-8 encoded file of Cyrillic characters displays
> correctly on both. But Wikipedia's nav bar language lists differ.
>
> Having deleted RUfl_cache, Iyonix shows all correctly except Georgian
>
> ARMX6 showed all correctly except
> Korean, Japanese, Thai and Chinese
> until I deleted RUfl_cache, and now shows none of the non-Latin scripts.
>
> Why the differences?
Can't help here.
> Indeed how come only Acorn fonts are apparently
> needed in Netsurf Choices?
This is because the fonts you specify are defaults - what to use if the
web page doesn't include font information. Consequently, it only needs
8-bit fonts.
--
Nick Roberts tigger @ orpheusinternet.co.uk
Hanlon's Razor: Never attribute to malice that which
can be adequately explained by stupidity.
Re: Google and #spf
In article <57f8148b3bdave@triffid.co.uk>, Dave <dave@triffid.co.uk>
wrote:
> In article <5e2d0df857.jim@6.abbeypress.net>, Jim Nagel
> <netsurf@abbeypress.co.uk> wrote: [Snippy]
> > Have never found a way of programming Keystroke to do this. If
> > anyone has succeeded, please export the relevant Keystroke Selection
> > file & share it.
> Must confess I've tried with Keystroke a lot of times but never
> succeeded.
The only way to keep the JS setting on screen as a button is to
1. open choices
2. open content
3. minimise/put configuration on the iconbar
4. toggle JavaScript
5. click Set with Adjust
6. goto 4
--
Tim Hill
Webmaster, www.timil.com
websites : php : RISC OS
wrote:
> In article <5e2d0df857.jim@6.abbeypress.net>, Jim Nagel
> <netsurf@abbeypress.co.uk> wrote: [Snippy]
> > Have never found a way of programming Keystroke to do this. If
> > anyone has succeeded, please export the relevant Keystroke Selection
> > file & share it.
> Must confess I've tried with Keystroke a lot of times but never
> succeeded.
The only way to keep the JS setting on screen as a button is to
1. open choices
2. open content
3. minimise/put configuration on the iconbar
4. toggle JavaScript
5. click Set with Adjust
6. goto 4
--
Tim Hill
Webmaster, www.timil.com
websites : php : RISC OS
Unicode question
I have similar settings for Netsurf on Iyonix and ARMX6 and, for example,
a UTF-8 encoded file of Cyrillic characters displays correctly on both.
But Wikipedia's nav bar language lists differ.
Having deleted RUfl_cache, Iyonix shows all correctly except Georgian
ARMX6 showed all correctly except
Korean, Japanese, Thai and Chinese
until I deleted RUfl_cache, and now shows none of the non-Latin scripts.
Why the differences? Indeed how come only Acorn fonts are apparently
needed in Netsurf Choices? Setups are:
Iyonix OS 5.24
ARMX6 OS 5.25 (25-Apr-2018)
FontManager 3.79
FontDir Pro 3.23 (ARMX6 only)
Netsurf 3.10 (Dev CI #4851)
Netsurf Choices Fonts:
- Homerton
- Trinity
- Corpus
- Sassoon
- Pembroke
- Sans-serif
Unicode fonts available (but not specified to Netsurf) include:
- Cyberbit
- DejaVu (ARMX6 only)
--
Bernard
a UTF-8 encoded file of Cyrillic characters displays correctly on both.
But Wikipedia's nav bar language lists differ.
Having deleted RUfl_cache, Iyonix shows all correctly except Georgian
ARMX6 showed all correctly except
Korean, Japanese, Thai and Chinese
until I deleted RUfl_cache, and now shows none of the non-Latin scripts.
Why the differences? Indeed how come only Acorn fonts are apparently
needed in Netsurf Choices? Setups are:
Iyonix OS 5.24
ARMX6 OS 5.25 (25-Apr-2018)
FontManager 3.79
FontDir Pro 3.23 (ARMX6 only)
Netsurf 3.10 (Dev CI #4851)
Netsurf Choices Fonts:
- Homerton
- Trinity
- Corpus
- Sassoon
- Pembroke
- Sans-serif
Unicode fonts available (but not specified to Netsurf) include:
- Cyberbit
- DejaVu (ARMX6 only)
--
Bernard
Monday, 23 September 2019
Re: Google and #spf
On 23 Sep, Brian Howlett wrote:
> Titanium here, JS enabled - works but vv slow with Netsurf 4851 and the
> previous version I had installed, 4845.
Actually, I may have to take that back - although it certainly worked in
4845, it eventually had a problem in 4851 - it just prints the JS to the
NS window, along with the text normally displayed on the page.
Neither version displays the Google Doodle wither, just a pink rectangle
which is a .png file.
--
Brian Howlett
--------------------------------------------
"There ain't half been some clever bastards"
- the late Ian Dury
> Titanium here, JS enabled - works but vv slow with Netsurf 4851 and the
> previous version I had installed, 4845.
Actually, I may have to take that back - although it certainly worked in
4845, it eventually had a problem in 4851 - it just prints the JS to the
NS window, along with the text normally displayed on the page.
Neither version displays the Google Doodle wither, just a pink rectangle
which is a .png file.
--
Brian Howlett
--------------------------------------------
"There ain't half been some clever bastards"
- the late Ian Dury
Re: Google and #spf
On 23 Sep, Dave wrote:
> I can confirm...
> #4850 with Javascript enabled, google.co.uk doesn't work.
> With Javascript disabled, google does work okay.
> VRPC-DL running RISC OS 6.20
Titanium here, JS enabled - works but vv slow with Netsurf 4851 and the
previous version I had installed, 4845.
--
Brian Howlett
------------------------------------------------------------------
This place would be a paradise tomorrow, if every department had a
supervisor with a sub-machine gun.
> I can confirm...
> #4850 with Javascript enabled, google.co.uk doesn't work.
> With Javascript disabled, google does work okay.
> VRPC-DL running RISC OS 6.20
Titanium here, JS enabled - works but vv slow with Netsurf 4851 and the
previous version I had installed, 4845.
--
Brian Howlett
------------------------------------------------------------------
This place would be a paradise tomorrow, if every department had a
supervisor with a sub-machine gun.
Re: Google and #spf
In article <5e2d0df857.jim@6.abbeypress.net>,
Jim Nagel <netsurf@abbeypress.co.uk> wrote:
[Snippy]
> Have never found a way of programming Keystroke to do this. If anyone
> has succeeded, please export the relevant Keystroke Selection file &
> share it.
Must confess I've tried with Keystroke a lot of times but never succeeded.
Dave
--
Dave Triffid
Jim Nagel <netsurf@abbeypress.co.uk> wrote:
[Snippy]
> Have never found a way of programming Keystroke to do this. If anyone
> has succeeded, please export the relevant Keystroke Selection file &
> share it.
Must confess I've tried with Keystroke a lot of times but never succeeded.
Dave
--
Dave Triffid
Re: Google and #spf
Dave Sine Surnomine wrote on 23 Sep:
> #4850 with Javascript enabled, google.co.uk doesn't work.
> With Javascript disabled, google does work okay.
You're right!
Sure makes one wish for that "Javasccript on/off" button on the Netsurf
button bar that we've oft wished for! (Ancient Fresco had one, could
pinch the icon from Fresco.) So much handier than repetitititive trips to
iconbar Choices > Content > Disable Javascript > Set.
Have never found a way of programming Keystroke to do this. If anyone has
succeeded, please export the relevant Keystroke Selection file & share it.
Or a "switch" that could be added to an URL file to set Javascript off,
when relevant to that particular URL, as in this case.
And thanks for looking into the problem, Daniel.
--
Jim Nagel www.archivemag.co.uk
> #4850 with Javascript enabled, google.co.uk doesn't work.
> With Javascript disabled, google does work okay.
You're right!
Sure makes one wish for that "Javasccript on/off" button on the Netsurf
button bar that we've oft wished for! (Ancient Fresco had one, could
pinch the icon from Fresco.) So much handier than repetitititive trips to
iconbar Choices > Content > Disable Javascript > Set.
Have never found a way of programming Keystroke to do this. If anyone has
succeeded, please export the relevant Keystroke Selection file & share it.
Or a "switch" that could be added to an URL file to set Javascript off,
when relevant to that particular URL, as in this case.
And thanks for looking into the problem, Daniel.
--
Jim Nagel www.archivemag.co.uk
Sunday, 22 September 2019
Re: Google and #spf
In article <a4fddcf757.pittdj+@iyonix.home>,
David Pitt <pittdj@pittdj.co.uk> wrote:
> In message <20190923044637.GK1816@somnambulist.local>
> Daniel Silverstone <dsilvers@netsurf-browser.org> wrote:
> > On Mon, Sep 23, 2019 at 01:27:52 +0100, Jim Nagel wrote:
> >> For the past few days, telling Netsurf to go to http://google.co.uk
> >> results in an endless loop and no joy. What's this all about?
> >>
> >> The Netsurf URL bar changes from what I typed to this:
> >> http://www.google.co.uk/#spf=1569197185001
> >> The 13-digit number keeps changing, and the hourglass keeps running.
> >> With or without Javascript enabled.
> > Without JS enabled I'm not sure.
> [snip]
> #4850 is OK here with Javascript disabled as checked on a Titanium,
> Raspberry Pi Mk1, and RPCEmu.
> The recent 3.9 release is OK with Javascript enabled.
I can confirm...
#4850 with Javascript enabled, google.co.uk doesn't work.
With Javascript disabled, google does work okay.
VRPC-DL running RISC OS 6.20
Dave
--
Dave Triffid
David Pitt <pittdj@pittdj.co.uk> wrote:
> In message <20190923044637.GK1816@somnambulist.local>
> Daniel Silverstone <dsilvers@netsurf-browser.org> wrote:
> > On Mon, Sep 23, 2019 at 01:27:52 +0100, Jim Nagel wrote:
> >> For the past few days, telling Netsurf to go to http://google.co.uk
> >> results in an endless loop and no joy. What's this all about?
> >>
> >> The Netsurf URL bar changes from what I typed to this:
> >> http://www.google.co.uk/#spf=1569197185001
> >> The 13-digit number keeps changing, and the hourglass keeps running.
> >> With or without Javascript enabled.
> > Without JS enabled I'm not sure.
> [snip]
> #4850 is OK here with Javascript disabled as checked on a Titanium,
> Raspberry Pi Mk1, and RPCEmu.
> The recent 3.9 release is OK with Javascript enabled.
I can confirm...
#4850 with Javascript enabled, google.co.uk doesn't work.
With Javascript disabled, google does work okay.
VRPC-DL running RISC OS 6.20
Dave
--
Dave Triffid
Re: Google and #spf
In message <20190923044637.GK1816@somnambulist.local>
Daniel Silverstone <dsilvers@netsurf-browser.org> wrote:
> On Mon, Sep 23, 2019 at 01:27:52 +0100, Jim Nagel wrote:
>> For the past few days, telling Netsurf to go to http://google.co.uk
>> results in an endless loop and no joy. What's this all about?
>>
>> The Netsurf URL bar changes from what I typed to this:
>> http://www.google.co.uk/#spf=1569197185001
>> The 13-digit number keeps changing, and the hourglass keeps running.
>> With or without Javascript enabled.
> Without JS enabled I'm not sure.
[snip]
#4850 is OK here with Javascript disabled as checked on a Titanium,
Raspberry Pi Mk1, and RPCEmu.
The recent 3.9 release is OK with Javascript enabled.
--
David Pitt
Titanium
Daniel Silverstone <dsilvers@netsurf-browser.org> wrote:
> On Mon, Sep 23, 2019 at 01:27:52 +0100, Jim Nagel wrote:
>> For the past few days, telling Netsurf to go to http://google.co.uk
>> results in an endless loop and no joy. What's this all about?
>>
>> The Netsurf URL bar changes from what I typed to this:
>> http://www.google.co.uk/#spf=1569197185001
>> The 13-digit number keeps changing, and the hourglass keeps running.
>> With or without Javascript enabled.
> Without JS enabled I'm not sure.
[snip]
#4850 is OK here with Javascript disabled as checked on a Titanium,
Raspberry Pi Mk1, and RPCEmu.
The recent 3.9 release is OK with Javascript enabled.
--
David Pitt
Titanium
Re: Google and #spf
On Mon, Sep 23, 2019 at 01:27:52 +0100, Jim Nagel wrote:
> For the past few days, telling Netsurf to go to http://google.co.uk
> results in an endless loop and no joy. What's this all about?
>
> The Netsurf URL bar changes from what I typed to this:
> http://www.google.co.uk/#spf=1569197185001
> The 13-digit number keeps changing, and the hourglass keeps running.
> With or without Javascript enabled.
Without JS enabled I'm not sure. With JS enabled it's a performance issue.
I cannot replicate it on my laptop because it's so much faster than any RISC OS
system, but I believe it'll be due to some JS trying to work stuff out and
failing because it's too slow. I will attempt to root out the problem
but it's quite possible I won't be able to for a week or more. We're aware
of it as https://bugs.netsurf-browser.org/mantis/view.php?id=2702
D.
--
Daniel Silverstone http://www.netsurf-browser.org/
PGP mail accepted and encouraged. Key Id: 3CCE BABE 206C 3B69
> For the past few days, telling Netsurf to go to http://google.co.uk
> results in an endless loop and no joy. What's this all about?
>
> The Netsurf URL bar changes from what I typed to this:
> http://www.google.co.uk/#spf=1569197185001
> The 13-digit number keeps changing, and the hourglass keeps running.
> With or without Javascript enabled.
Without JS enabled I'm not sure. With JS enabled it's a performance issue.
I cannot replicate it on my laptop because it's so much faster than any RISC OS
system, but I believe it'll be due to some JS trying to work stuff out and
failing because it's too slow. I will attempt to root out the problem
but it's quite possible I won't be able to for a week or more. We're aware
of it as https://bugs.netsurf-browser.org/mantis/view.php?id=2702
D.
--
Daniel Silverstone http://www.netsurf-browser.org/
PGP mail accepted and encouraged. Key Id: 3CCE BABE 206C 3B69
Google and #spf
For the past few days, telling Netsurf to go to http://google.co.uk
results in an endless loop and no joy. What's this all about?
The Netsurf URL bar changes from what I typed to this:
http://www.google.co.uk/#spf=1569197185001
The 13-digit number keeps changing, and the hourglass keeps running.
With or without Javascript enabled.
Was using Netsurf #4845 when this phenomenon began. Downloaded #4850 just
now, but still no joy.
https://duckduckgo.com/html/search continues to work with no prob.
So what is Google playing at?
Is a fix likely for Netsurf?
--
Jim Nagel www.archivemag.co.uk
results in an endless loop and no joy. What's this all about?
The Netsurf URL bar changes from what I typed to this:
http://www.google.co.uk/#spf=1569197185001
The 13-digit number keeps changing, and the hourglass keeps running.
With or without Javascript enabled.
Was using Netsurf #4845 when this phenomenon began. Downloaded #4850 just
now, but still no joy.
https://duckduckgo.com/html/search continues to work with no prob.
So what is Google playing at?
Is a fix likely for Netsurf?
--
Jim Nagel www.archivemag.co.uk
Monday, 9 September 2019
[PATCH] DirectFB port
diff -Naur libnsfb.orig/Makefile libnsfb/Makefile
--- libnsfb.orig/Makefile 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/Makefile 2019-09-05 15:05:32.000000000 +0000
@@ -44,11 +44,19 @@
# determine which surface handlers can be compiled based upon avalable library
$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver))
+$(eval $(call pkg_config_package_available,NSFB_DIRECTFB_AVAILABLE,directfb))
$(eval $(call pkg_config_package_available,NSFB_SDL_AVAILABLE,sdl))
$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES)))
$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client))
# Flags and setup for each support library
+ifeq ($(NSFB_DIRECTFB_AVAILABLE),yes)
+ $(eval $(call pkg_config_package_add_flags,directfb,CFLAGS,LDFLAGS))
+ $(eval $(call pkg_config_package_add_flags,directfb,TESTCFLAGS,TESTLDFLAGS))
+
+ REQUIRED_PKGS := $(REQUIRED_PKGS) directfb
+endif
+
ifeq ($(NSFB_SDL_AVAILABLE),yes)
$(eval $(call pkg_config_package_add_flags,sdl,CFLAGS))
$(eval $(call pkg_config_package_add_flags,sdl,TESTCFLAGS,TESTLDFLAGS))
diff -Naur libnsfb.orig/README libnsfb/README
--- libnsfb.orig/README 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/README 2019-09-05 15:05:32.000000000 +0000
@@ -18,6 +18,7 @@
The following libraries may also be installed:
+ + DirectFB (for the DirectFB surface)
+ SDL 1.2 (for the SDL surface)
+ libxcb* (for the X11 surface)
* wayland-client (for wayland surface)
diff -Naur libnsfb.orig/include/libnsfb.h libnsfb/include/libnsfb.h
--- libnsfb.orig/include/libnsfb.h 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/include/libnsfb.h 2019-09-05 15:05:32.000000000 +0000
@@ -36,6 +36,7 @@
enum nsfb_type_e {
NSFB_SURFACE_NONE = 0, /**< No surface */
NSFB_SURFACE_RAM, /**< RAM surface */
+ NSFB_SURFACE_DIRECTFB, /**< DirectFB surface */
NSFB_SURFACE_SDL, /**< SDL surface */
NSFB_SURFACE_LINUX, /**< Linux framebuffer surface */
NSFB_SURFACE_VNC, /**< VNC surface */
diff -Naur libnsfb.orig/src/surface/Makefile libnsfb/src/surface/Makefile
--- libnsfb.orig/src/surface/Makefile 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/src/surface/Makefile 2019-09-05 15:05:32.000000000 +0000
@@ -4,6 +4,7 @@
SURFACE_HANDLER_yes := surface.c ram.c
# optional surface handlers
+SURFACE_HANDLER_$(NSFB_DIRECTFB_AVAILABLE) += directfb.c
SURFACE_HANDLER_$(NSFB_SDL_AVAILABLE) += sdl.c
SURFACE_HANDLER_$(NSFB_XCB_AVAILABLE) += x.c
SURFACE_HANDLER_$(NSFB_VNC_AVAILABLE) += vnc.c
diff -Naur libnsfb.orig/src/surface/directfb.c libnsfb/src/surface/directfb.c
--- libnsfb.orig/src/surface/directfb.c 1970-01-01 00:00:00.000000000 +0000
+++ libnsfb/src/surface/directfb.c 2019-09-05 15:05:32.000000000 +0000
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2019 Nicolas Caramelli
+ *
+ * This file is part of libnsfb, http://www.netsurf-browser.org/
+ * Licenced under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include <directfb.h>
+
+#include "libnsfb.h"
+#include "libnsfb_event.h"
+
+#include "surface.h"
+#include "plot.h"
+
+typedef struct directfb_priv_s {
+ IDirectFB *dfb;
+ IDirectFBDisplayLayer *layer;
+ IDirectFBWindow *window;
+ IDirectFBSurface *surface;
+ IDirectFBEventBuffer *buffer;
+} directfb_priv_t;
+
+static int directfb_set_geometry(nsfb_t *nsfb, int width, int height,
+ enum nsfb_format_e format)
+{
+ if (nsfb->surface_priv != NULL) {
+ return -1;
+ }
+
+ nsfb->width = width;
+ nsfb->height = height;
+ if (format != NSFB_FMT_XRGB8888) {
+ return -1;
+ }
+
+ select_plotters(nsfb);
+
+ return 0;
+}
+
+static int directfb_initialise(nsfb_t *nsfb)
+{
+ directfb_priv_t *directfb_priv;
+ int ret = DFB_OK;
+ DFBWindowDescription desc;
+
+ if (nsfb->surface_priv != NULL) {
+ return -1;
+ }
+
+ directfb_priv = calloc(1, sizeof(directfb_priv_t));
+ if (directfb_priv == NULL) {
+ fprintf(stderr, "DirectFB private data allocation failed\n");
+ return -1;
+ }
+
+ ret = DirectFBInit(NULL, NULL);
+ if (ret) {
+ fprintf(stderr, "DirectFBInit failed: %s\n", DirectFBErrorString(ret));
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = DirectFBCreate(&directfb_priv->dfb);
+ if (ret) {
+ fprintf(stderr, "DirectFBCreate failed: %s\n",
+ DirectFBErrorString(ret));
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->dfb->GetDisplayLayer(directfb_priv->dfb, DLID_PRIMARY,
+ &directfb_priv->layer);
+ if (ret) {
+ fprintf(stderr, "GetDisplayLayer failed: %s\n",
+ DirectFBErrorString(ret));
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ desc.flags = DWDESC_WIDTH | DWDESC_HEIGHT | DSDESC_PIXELFORMAT;
+ desc.width = nsfb->width;
+ desc.height = nsfb->height;
+ desc.pixelformat = DSPF_ARGB;
+ ret = directfb_priv->layer->CreateWindow(directfb_priv->layer, &desc,
+ &directfb_priv->window);
+ if (ret) {
+ fprintf(stderr, "CreateWindow failed: %s\n", DirectFBErrorString(ret));
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->window->GetSurface(directfb_priv->window,
+ &directfb_priv->surface);
+ if (ret) {
+ fprintf(stderr, "GetSurface failed: %s\n", DirectFBErrorString(ret));
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ directfb_priv->surface->Lock(directfb_priv->surface, DSLF_WRITE,
+ (void **)&nsfb->ptr, &nsfb->linelen);
+ directfb_priv->surface->Unlock(directfb_priv->surface);
+
+ ret = directfb_priv->window->SetOpacity(directfb_priv->window, 0xff);
+ if (ret) {
+ fprintf(stderr, "SetOpacity failed: %s\n", DirectFBErrorString(ret));
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->dfb->CreateEventBuffer(directfb_priv->dfb,
+ &directfb_priv->buffer);
+ if (ret) {
+ fprintf(stderr, "CreateEventBuffer failed: %s\n",
+ DirectFBErrorString(ret));
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->window->AttachEventBuffer(directfb_priv->window,
+ directfb_priv->buffer);
+ if (ret) {
+ fprintf(stderr, "AttachEventBuffer failed: %s\n",
+ DirectFBErrorString(ret));
+ directfb_priv->buffer->Release(directfb_priv->buffer);
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ nsfb->surface_priv = directfb_priv;
+
+ return 0;
+}
+
+static int directfb_finalise(nsfb_t *nsfb)
+{
+ directfb_priv_t *directfb_priv = nsfb->surface_priv;
+
+ if (directfb_priv == NULL) {
+ return 0;
+ }
+
+ directfb_priv->buffer->Release(directfb_priv->buffer);
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+
+ return 0;
+}
+
+static bool directfb_input(nsfb_t *nsfb, nsfb_event_t *event, int timeout)
+{
+ directfb_priv_t *directfb_priv = nsfb->surface_priv;
+ int ret = DFB_OK;
+ DFBWindowEvent dfb_event;
+
+ if (directfb_priv == NULL) {
+ return false;
+ }
+
+ ret = directfb_priv->buffer->WaitForEventWithTimeout(directfb_priv->buffer,
+ timeout / 1000,
+ timeout % 1000);
+ if (ret == DFB_TIMEOUT) {
+ event->type = NSFB_EVENT_CONTROL;
+ event->value.controlcode = NSFB_CONTROL_TIMEOUT;
+ return true;
+ }
+
+ directfb_priv->buffer->GetEvent(directfb_priv->buffer,
+ (DFBEvent *)&dfb_event);
+
+ if (dfb_event.type == DWET_KEYDOWN) {
+ event->type = NSFB_EVENT_KEY_DOWN;
+ event->value.keycode = dfb_event.key_symbol;
+ } else if (dfb_event.type == DWET_KEYUP) {
+ event->type = NSFB_EVENT_KEY_UP;
+ event->value.keycode = dfb_event.key_symbol;
+ } else if (dfb_event.type == DWET_BUTTONDOWN) {
+ event->type = NSFB_EVENT_KEY_DOWN;
+ switch (dfb_event.button) {
+ case DIBI_LEFT:
+ event->value.keycode = NSFB_KEY_MOUSE_1;
+ break;
+ case DIBI_MIDDLE:
+ event->value.keycode = NSFB_KEY_MOUSE_2;
+ break;
+ case DIBI_RIGHT:
+ event->value.keycode = NSFB_KEY_MOUSE_3;
+ break;
+ default:
+ break;
+ }
+ } else if (dfb_event.type == DWET_BUTTONUP) {
+ event->type = NSFB_EVENT_KEY_UP;
+ switch (dfb_event.button) {
+ case DIBI_LEFT:
+ event->value.keycode = NSFB_KEY_MOUSE_1;
+ break;
+ case DIBI_MIDDLE:
+ event->value.keycode = NSFB_KEY_MOUSE_2;
+ break;
+ case DIBI_RIGHT:
+ event->value.keycode = NSFB_KEY_MOUSE_3;
+ break;
+ default:
+ break;
+ }
+ } else if (dfb_event.type == DWET_MOTION) {
+ event->type = NSFB_EVENT_MOVE_ABSOLUTE;
+ event->value.vector.x = dfb_event.x;
+ event->value.vector.y = dfb_event.y;
+ event->value.vector.z = 0;
+ } else {
+ event->type = NSFB_EVENT_NONE;
+ }
+
+ return true;
+}
+
+static int directfb_update(nsfb_t *nsfb, nsfb_bbox_t *box)
+{
+ directfb_priv_t *directfb_priv = nsfb->surface_priv;
+
+ if (directfb_priv != NULL) {
+ directfb_priv->surface->Flip(directfb_priv->surface,
+ (DFBRegion *)box, DSFLIP_WAITFORSYNC);
+ }
+
+ return 0;
+}
+
+const nsfb_surface_rtns_t directfb_rtns = {
+ .geometry = directfb_set_geometry,
+ .initialise = directfb_initialise,
+ .finalise = directfb_finalise,
+ .input = directfb_input,
+ .update = directfb_update,
+};
+
+NSFB_SURFACE_DEF(directfb, NSFB_SURFACE_DIRECTFB, &directfb_rtns)
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * End:
+ */
--- libnsfb.orig/Makefile 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/Makefile 2019-09-05 15:05:32.000000000 +0000
@@ -44,11 +44,19 @@
# determine which surface handlers can be compiled based upon avalable library
$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver))
+$(eval $(call pkg_config_package_available,NSFB_DIRECTFB_AVAILABLE,directfb))
$(eval $(call pkg_config_package_available,NSFB_SDL_AVAILABLE,sdl))
$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES)))
$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client))
# Flags and setup for each support library
+ifeq ($(NSFB_DIRECTFB_AVAILABLE),yes)
+ $(eval $(call pkg_config_package_add_flags,directfb,CFLAGS,LDFLAGS))
+ $(eval $(call pkg_config_package_add_flags,directfb,TESTCFLAGS,TESTLDFLAGS))
+
+ REQUIRED_PKGS := $(REQUIRED_PKGS) directfb
+endif
+
ifeq ($(NSFB_SDL_AVAILABLE),yes)
$(eval $(call pkg_config_package_add_flags,sdl,CFLAGS))
$(eval $(call pkg_config_package_add_flags,sdl,TESTCFLAGS,TESTLDFLAGS))
diff -Naur libnsfb.orig/README libnsfb/README
--- libnsfb.orig/README 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/README 2019-09-05 15:05:32.000000000 +0000
@@ -18,6 +18,7 @@
The following libraries may also be installed:
+ + DirectFB (for the DirectFB surface)
+ SDL 1.2 (for the SDL surface)
+ libxcb* (for the X11 surface)
* wayland-client (for wayland surface)
diff -Naur libnsfb.orig/include/libnsfb.h libnsfb/include/libnsfb.h
--- libnsfb.orig/include/libnsfb.h 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/include/libnsfb.h 2019-09-05 15:05:32.000000000 +0000
@@ -36,6 +36,7 @@
enum nsfb_type_e {
NSFB_SURFACE_NONE = 0, /**< No surface */
NSFB_SURFACE_RAM, /**< RAM surface */
+ NSFB_SURFACE_DIRECTFB, /**< DirectFB surface */
NSFB_SURFACE_SDL, /**< SDL surface */
NSFB_SURFACE_LINUX, /**< Linux framebuffer surface */
NSFB_SURFACE_VNC, /**< VNC surface */
diff -Naur libnsfb.orig/src/surface/Makefile libnsfb/src/surface/Makefile
--- libnsfb.orig/src/surface/Makefile 2019-09-05 15:05:20.000000000 +0000
+++ libnsfb/src/surface/Makefile 2019-09-05 15:05:32.000000000 +0000
@@ -4,6 +4,7 @@
SURFACE_HANDLER_yes := surface.c ram.c
# optional surface handlers
+SURFACE_HANDLER_$(NSFB_DIRECTFB_AVAILABLE) += directfb.c
SURFACE_HANDLER_$(NSFB_SDL_AVAILABLE) += sdl.c
SURFACE_HANDLER_$(NSFB_XCB_AVAILABLE) += x.c
SURFACE_HANDLER_$(NSFB_VNC_AVAILABLE) += vnc.c
diff -Naur libnsfb.orig/src/surface/directfb.c libnsfb/src/surface/directfb.c
--- libnsfb.orig/src/surface/directfb.c 1970-01-01 00:00:00.000000000 +0000
+++ libnsfb/src/surface/directfb.c 2019-09-05 15:05:32.000000000 +0000
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2019 Nicolas Caramelli
+ *
+ * This file is part of libnsfb, http://www.netsurf-browser.org/
+ * Licenced under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include <directfb.h>
+
+#include "libnsfb.h"
+#include "libnsfb_event.h"
+
+#include "surface.h"
+#include "plot.h"
+
+typedef struct directfb_priv_s {
+ IDirectFB *dfb;
+ IDirectFBDisplayLayer *layer;
+ IDirectFBWindow *window;
+ IDirectFBSurface *surface;
+ IDirectFBEventBuffer *buffer;
+} directfb_priv_t;
+
+static int directfb_set_geometry(nsfb_t *nsfb, int width, int height,
+ enum nsfb_format_e format)
+{
+ if (nsfb->surface_priv != NULL) {
+ return -1;
+ }
+
+ nsfb->width = width;
+ nsfb->height = height;
+ if (format != NSFB_FMT_XRGB8888) {
+ return -1;
+ }
+
+ select_plotters(nsfb);
+
+ return 0;
+}
+
+static int directfb_initialise(nsfb_t *nsfb)
+{
+ directfb_priv_t *directfb_priv;
+ int ret = DFB_OK;
+ DFBWindowDescription desc;
+
+ if (nsfb->surface_priv != NULL) {
+ return -1;
+ }
+
+ directfb_priv = calloc(1, sizeof(directfb_priv_t));
+ if (directfb_priv == NULL) {
+ fprintf(stderr, "DirectFB private data allocation failed\n");
+ return -1;
+ }
+
+ ret = DirectFBInit(NULL, NULL);
+ if (ret) {
+ fprintf(stderr, "DirectFBInit failed: %s\n", DirectFBErrorString(ret));
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = DirectFBCreate(&directfb_priv->dfb);
+ if (ret) {
+ fprintf(stderr, "DirectFBCreate failed: %s\n",
+ DirectFBErrorString(ret));
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->dfb->GetDisplayLayer(directfb_priv->dfb, DLID_PRIMARY,
+ &directfb_priv->layer);
+ if (ret) {
+ fprintf(stderr, "GetDisplayLayer failed: %s\n",
+ DirectFBErrorString(ret));
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ desc.flags = DWDESC_WIDTH | DWDESC_HEIGHT | DSDESC_PIXELFORMAT;
+ desc.width = nsfb->width;
+ desc.height = nsfb->height;
+ desc.pixelformat = DSPF_ARGB;
+ ret = directfb_priv->layer->CreateWindow(directfb_priv->layer, &desc,
+ &directfb_priv->window);
+ if (ret) {
+ fprintf(stderr, "CreateWindow failed: %s\n", DirectFBErrorString(ret));
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->window->GetSurface(directfb_priv->window,
+ &directfb_priv->surface);
+ if (ret) {
+ fprintf(stderr, "GetSurface failed: %s\n", DirectFBErrorString(ret));
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ directfb_priv->surface->Lock(directfb_priv->surface, DSLF_WRITE,
+ (void **)&nsfb->ptr, &nsfb->linelen);
+ directfb_priv->surface->Unlock(directfb_priv->surface);
+
+ ret = directfb_priv->window->SetOpacity(directfb_priv->window, 0xff);
+ if (ret) {
+ fprintf(stderr, "SetOpacity failed: %s\n", DirectFBErrorString(ret));
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->dfb->CreateEventBuffer(directfb_priv->dfb,
+ &directfb_priv->buffer);
+ if (ret) {
+ fprintf(stderr, "CreateEventBuffer failed: %s\n",
+ DirectFBErrorString(ret));
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ ret = directfb_priv->window->AttachEventBuffer(directfb_priv->window,
+ directfb_priv->buffer);
+ if (ret) {
+ fprintf(stderr, "AttachEventBuffer failed: %s\n",
+ DirectFBErrorString(ret));
+ directfb_priv->buffer->Release(directfb_priv->buffer);
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+ return -1;
+ }
+
+ nsfb->surface_priv = directfb_priv;
+
+ return 0;
+}
+
+static int directfb_finalise(nsfb_t *nsfb)
+{
+ directfb_priv_t *directfb_priv = nsfb->surface_priv;
+
+ if (directfb_priv == NULL) {
+ return 0;
+ }
+
+ directfb_priv->buffer->Release(directfb_priv->buffer);
+ directfb_priv->surface->Release(directfb_priv->surface);
+ directfb_priv->window->Release(directfb_priv->window);
+ directfb_priv->layer->Release(directfb_priv->layer);
+ directfb_priv->dfb->Release(directfb_priv->dfb);
+ free(directfb_priv);
+
+ return 0;
+}
+
+static bool directfb_input(nsfb_t *nsfb, nsfb_event_t *event, int timeout)
+{
+ directfb_priv_t *directfb_priv = nsfb->surface_priv;
+ int ret = DFB_OK;
+ DFBWindowEvent dfb_event;
+
+ if (directfb_priv == NULL) {
+ return false;
+ }
+
+ ret = directfb_priv->buffer->WaitForEventWithTimeout(directfb_priv->buffer,
+ timeout / 1000,
+ timeout % 1000);
+ if (ret == DFB_TIMEOUT) {
+ event->type = NSFB_EVENT_CONTROL;
+ event->value.controlcode = NSFB_CONTROL_TIMEOUT;
+ return true;
+ }
+
+ directfb_priv->buffer->GetEvent(directfb_priv->buffer,
+ (DFBEvent *)&dfb_event);
+
+ if (dfb_event.type == DWET_KEYDOWN) {
+ event->type = NSFB_EVENT_KEY_DOWN;
+ event->value.keycode = dfb_event.key_symbol;
+ } else if (dfb_event.type == DWET_KEYUP) {
+ event->type = NSFB_EVENT_KEY_UP;
+ event->value.keycode = dfb_event.key_symbol;
+ } else if (dfb_event.type == DWET_BUTTONDOWN) {
+ event->type = NSFB_EVENT_KEY_DOWN;
+ switch (dfb_event.button) {
+ case DIBI_LEFT:
+ event->value.keycode = NSFB_KEY_MOUSE_1;
+ break;
+ case DIBI_MIDDLE:
+ event->value.keycode = NSFB_KEY_MOUSE_2;
+ break;
+ case DIBI_RIGHT:
+ event->value.keycode = NSFB_KEY_MOUSE_3;
+ break;
+ default:
+ break;
+ }
+ } else if (dfb_event.type == DWET_BUTTONUP) {
+ event->type = NSFB_EVENT_KEY_UP;
+ switch (dfb_event.button) {
+ case DIBI_LEFT:
+ event->value.keycode = NSFB_KEY_MOUSE_1;
+ break;
+ case DIBI_MIDDLE:
+ event->value.keycode = NSFB_KEY_MOUSE_2;
+ break;
+ case DIBI_RIGHT:
+ event->value.keycode = NSFB_KEY_MOUSE_3;
+ break;
+ default:
+ break;
+ }
+ } else if (dfb_event.type == DWET_MOTION) {
+ event->type = NSFB_EVENT_MOVE_ABSOLUTE;
+ event->value.vector.x = dfb_event.x;
+ event->value.vector.y = dfb_event.y;
+ event->value.vector.z = 0;
+ } else {
+ event->type = NSFB_EVENT_NONE;
+ }
+
+ return true;
+}
+
+static int directfb_update(nsfb_t *nsfb, nsfb_bbox_t *box)
+{
+ directfb_priv_t *directfb_priv = nsfb->surface_priv;
+
+ if (directfb_priv != NULL) {
+ directfb_priv->surface->Flip(directfb_priv->surface,
+ (DFBRegion *)box, DSFLIP_WAITFORSYNC);
+ }
+
+ return 0;
+}
+
+const nsfb_surface_rtns_t directfb_rtns = {
+ .geometry = directfb_set_geometry,
+ .initialise = directfb_initialise,
+ .finalise = directfb_finalise,
+ .input = directfb_input,
+ .update = directfb_update,
+};
+
+NSFB_SURFACE_DEF(directfb, NSFB_SURFACE_DIRECTFB, &directfb_rtns)
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * End:
+ */
Hi all,
DirectFB may belong to the past, but here is a patch for people still interested in using it.
A screenshot with NetSurf running directly on top of DirectFB is available on the HiGFXback (History of graphics backends) project.
Nicolas Caramelli
DirectFB may belong to the past, but here is a patch for people still interested in using it.
A screenshot with NetSurf running directly on top of DirectFB is available on the HiGFXback (History of graphics backends) project.
Nicolas Caramelli
Subscribe to:
Posts (Atom)