* Fontconfig and freetype are now building fine, so let's add correct
packages.
* Our pixman was way too old and cairo didn't want to use it
* itstool is used by gtk_doc, which will come in another commit.
Source or destination buffers passed to pagecache functions may belong
to kernel memory (e.g. when the caller is packagefs). Because of that
we should tell vm_memcpy_{from, to}_physical() truth, not assume that all
buffers are in user memory. That's important because user memory page fault
handlers cannot be nested and these functions may be used while handling
a page fault.
With high probability fixes#11246.
Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
At the moment, the web-app has a defined, limited set of supported languages
for translations. JSON requests fail when asking for an unsupported language
code. For the time being, force the language code to be in the supported set.
... completely untested and premature. The idea is that after a successful
login with the web-app, the password used is stored in the keyring. Then
HaikuDepot will restore just last the used username on next launch and retrieve
the password from the keyring. One could also register multiple accounts in
HaikuDepot and switch between them.
* It seems openbmap is using a variation of the API that's not
compatible with what other providers use.
* Fix a ";" instead of "," in the JSON request. We should get a
BJsonBuilder to avoid such silly errors
* Improve indenting of the request to ease readability.
* Parse the latitude and longitude as doubles, not strings.
This was tested against Mozilla Location Services and I get accurate
results (withing a few hundred meters). However I'm not sure how to
share the MLS API key safely so it is used only in Haiku, I will discuss
this with the MLS team.
A BGeolocation object can query an online service to get geolocation
and geotagging data:
* LocateSelf() tries to locate the machine it is running on, by using an
online database of wifi access points
* Locate() (not yet implemented) searches a BString and converts it to
lat/lon coordinates (reverse geotagging)
* Name() (not yet implemented) finds a suitable name for the given
coordinates (address, building name, or anything fitting).
The default service used is openbmap.org, which is freely available but
not very accurate. A request has been sent to Mozilla to use MLS
(Mozilla Location Services), which is a bit more accurate but needs an
API key. MLS is used for geolocation on FirefoxOS, for mobile phones
which don't have a GPS, and the data can be contributed by Firefox for
Android or the dedicated MozStumbler app.
Alternatively, Google Maps also provide the service, but wants
people to pay for it. Google Maps data is more accurate as all Android
devices contribute data to it.
All 3 services use the same JSON-based API: we send a list of reachable
Wifi APs (mac address and signal strength), and we get lattitude and
longitude information, and possibly extra data which will currently be
unused.
This can be used to implement HTML5 geolocation with reasonably accurate
results, but it can also be used in other places. For example
FirstBootPrompt could try to guess a list of most likely languages and
keyboard layouts from it (if wifi is working at install time, that is).
UserLoginWindow:
* Focus nickname text field on tab switches
* Implement testing the login info, the web-app replies with a token, if
valid. It could be used for Token Bearer authorization of requests, but
this is not used yet. Instead the username and password are set on the
Model. Also after creating a new account successfully.
Model:
* Use a member instance of WebAppInterface. Set the preferred language
and the login-info only once.
from the one supplied by default.
Since the PM move, it was not possible anymore to use a different soundfont,
since the /boot/system/data folder became read only.
Now the user has to put the soundfont (or, better, a symbolic link to it)
into /home/config/settings/synth.sf2
In the future we'll supply a preflet to select the soundfont.
The accounts are created for real, but the information is not yet stored.
Nothing which would need it is currently implemented, like rating packages.
It is recommended to create accounts with a valid email address. Otherwise
the password cannot be reset, and it will need to be soon, since there
is a small change to the password storage in the pipe.
The error response from the service is parsed and presented
to the user, when the account could not be created. However, other checks
before contacting the server are not performed, like if the two passphrases
actually match.
The UserLoginWindow now has the concept of a running worker thread, and
while it runs, the UI controls (except Cancel) are disabled.
* Temporarily disable the non-working Profiles popup
* Remove the currently single-tabbed TabView
* Remove duplicate apply and revert buttons in the interfaces add-on.
The goal here is to remove functionalities not available in the current
network preferences, and finish the other parts, so we can put this new
preferences panel in service now. We can re-add the extra functionality
later.
* The initial design was probably inspired by Windows network settings,
which are a mess of nested windows and hyperlinks.
* Instead, the settings can be put directly inside the main window, like
it is done inthe media preflet. This makes the information available at
a glance and makes the UI easier to navigate.
* Remove the "configure" button and popup menu item. A single click is
now enough to show the settings for an interface
For this to work properly, complete the move to layout kit (there were a
few BRect-based constructorls left which would mess the layout) and
remove unneeded rectangle computations (layout kit does the job
already).
Further cleanup pending:
* Removal of the duplicate "revert" button
* Removal of the "save" button and switch to applying settings realtime
* Move the disable/enable and renegociate buttons inside the interface
settings
* Remove the top-level tab view (nested tab views are not nice) and
use a hierarchized list with both interfaces and services on the side
(like the Media preflet has audio and video).
Note that this does not reproduce #8447. I could not get more precise
details from involved people about how to reproduce this, and the patch
was already applied anyway, so I'm stopping my investigation for now.
Feel free to complete this with more test cases.
Change the monitor_lock to be a recursive_lock, fixing #7039.
Notify_device_monitor acquires the monitor lock, then the
monitor unregisters itself, calling unregister_device_monitor, which
acquires the monitor lock again.