summaryrefslogtreecommitdiff
path: root/todo/amigaos_frontend.mdwn
blob: 8b0c45ed7d09313897abf7a08339eea4b142887a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
[[!meta title="Todo/AmigaOS frontend"]]
[[!meta author="Chris"]]
[[!meta date="2017-01-12T19:51:28Z"]]


[[!toc]]

Plotters
--------

-   <s>Speed up plotting on 16-bit screenmodes</s>
    -   Think this is now largely irrelevant as font\_antialiasing:0
        makes a huge difference. However, would like to add
        hardware-accelerated anti-aliased text rendering
        (CompositeTags() does not support ALPHATEMPLATE so this is not
        possible at present - see also the chris/composite-text branch)

-   Direct rendering - problems
    -   inline image placement
    -   grey background for all text
    -   won't work with Cairo renderer
    -   may crash with certain gfx lib operations (AreaFill - need to
        alloc AreaInfo/TmpRas, check if this is ok to do on window
        rastports or if one or the other is allocated already)
    -   completely broken with tiled renderer
    -   Will probably only leave this in for debugging purposes, has no
        real use now.

-   Text
    -   Replace ligatures?
    -   Use splay trees for font cache

-   Simple Refresh
    -   Dragging blocking windows (eg. About) over the top of a render
        area does not redraw <i>at all</i>
    -   Favicon and throbbers do not redraw when damaged (the redraw
        functions just crash when they are initiated from the
        hook/ami\_handle\_msg)
    -   Change to \*queue\* redraws same as corewindows

-   bitmap scaling
    -   not always accurate
    -   switching to triangle mode is more accurate, but causing
        freezing at least on SAM440 with built-in gfx

User Interface
--------------

-   Shiny new treeview toolbar
-   treeview window redraw needs optimising
-   Drag-related
    -   Support the drag'n'drop of icons from/to OpenAmiga Filer project
    -   Drag to hotlist from WB?
    -   Drag selections within text input fields should do a move rather
        than a copy (might be core bug?)
    -   Clicks to become drags only after 5px or so movement (done for
        treeviews)
    -   Text selection should have auto-scroll ability at window's edge
    -   Dragging text to the URL or search bar should immediately enact
        that option
-   Iconify gadget - for non-WB screens. Add extra AppIcons functions,
    eg Info, Delete. Dynamic updates?
-   Allow multiple homepages - see
    <http://bugs.netsurf-browser.org/mantis/view.php?id=2270>
-   Add play/stop buttons in sound DT handler
-   Experiment with label.image in clicktabs (favicon; text in more
    appropriate charset)
    -   More appropriate charset also useful for hotlist menu, toolbar
        and history context menu
-   Use menuclass for pull-down menu
-   Fix passing of commandline options to the core (NSOPTS/M)
-   Use new Ringhio progress notifications for downloads (if we can
    upload the header)

Core windows
------------

-   Share off-screen bitmaps (with browser etc)
-   Allow simple refresh windows
-   Optimise redraw (on scroll)
-   Drag select redraw not working correctly
-   Regression: dragging from global history no longer working

popupmenu deadlock blockers
---------------------------

These need doing now a bug in popupmenu.library has been fixed.

-   Context sensitive help
    -   Add Help key processing in gui\_options.c and anywhere else
        needed (local history, treeviews, etc)
    -   <s>Fix asynchronous close signal thing now but is fixed in
        lib</s> - doesn't appear to need any changes, AFAICT I didn't
        bother working around this bug

Misc
----

-   <s>Switch to malloc/free so OS3 gets full benefit of clib2's slab
    allocator</s>
    -   <s>should have no impact on OS4 perf, but may be worth
        abstracting this so we can switch and change easier in future
        (unless it makes the debug info from clib2 useless... hmm...
        maybe use \#defines)</s>
    -   when done, enable clib2's debug mem handler: "The settings for
        the memory debugging layer can be found in the
        "stdlib\_memory.h" header file, right in the first few lines.
        Just uncomment the lines for "\_\_MEM\_DEBUG",
        "\_\_MEM\_DEBUG\_LOG" and "\_\_USE\_MEM\_TREES" as needed."
    -   Enable stats collection so we can tune the slab size - see
        <https://github.com/adtools/clib2/blob/master/library/include/stdlib.h#L190>
-   <s>Reduce signals usage (if possible)</s> - believe this is no
    longer an issue
-   Replace ExAll() usage in menu.c with whatever the new OS4 equivalent
    is
-   Font styles in clipboard (might need new chunk defined)
-   Revamp About requester
-   Add a low memory handler which calls llcache\_clean(true). Need to
    somehow guard this as it isn't thread-safe (set a "ok to clean",
    "clean in progress" flag which is set/cleared/blocks the GUI?)
    -   MEM\_TRY\_AGAIN might help, return this until safe to purge, or
        until purge can happen in main loop
    -   <s>Safe to do this to call \_\_free\_unused\_slabs() on OS3</s>
-   <s>Ditch libauto</s>
    -   Hopefully this fixes starting NetSurf on OS4.0 - program is
        apparently terminating before it starts running any code. Unable
        to test, awaiting feedback from the person who reported
        problems.
    -   See also
        <http://www.amiga.org/forums/showpost.php?p=773311&postcount=9>
    -   Probably doesn't work on OS4.0, as I saw a note that random()
        needed a v53 newlib.library when rebuilding the toolchain

OS3 Support
-----------

Please see <http://www.amiga.org/forums/showthread.php?t=56813> and
<http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=34237&forum=27>
for various discussion around this topic, as well as
<http://www.amiga.org/forums/showthread.php?t=63990> for more recent
updates.

NetSurf will now build for OS3. For a quick start on building NetSurf
see [[OS3 build notes|documentation/buildingforamigaos]].

There are some outstanding known issues:

-   Fonts
    -   There seems to be a (lack of) spacing problem with some fonts.
        May need to manually add OT\_SpaceWidth?
    -   Bitmap fonts (with limitations, ie. no UTF-8) support partially
        working - line break detection is broken and sometimes causes an
        infinite loop. (is this still the case?)
    -   The font scanner might be broken.

-   Plotters/Bitmaps
    -   We are currently ignoring the p96 stuff and treating all screens
        as palette-mapped. This works but means the faster direct 32-bit
        bitmap code is not being used when P96 is available. If we take
        the P96 path, bitmaps work but everything else is rendered
        unreadable.
    -   PDTM\_SCALE (used when getting palette mapped bitmaps) only
        works on v45, need to use BitMapScale for OS3.5 compatibility.
        (this might be fixed since guigfx change?)

-   GUI
    -   Tabs working but closing them causes NetSurf to crash.
    -   The status bar is not in the window border (frbuttonclass is
        irredeemably broken in OS3)
    -   A lot of the GUI hasn't tmk been tested.
    -   The treeview windows eat memory for breakfast (might be better
        now using corewindows with tiles and simplerefresh option)

-   Memory freed twice (recoverable alert 010000009) on exit