* File locks created by flock should only apply for the file descriptor
that was used to lock the file. Another fd on the same file should then
be denied access (calling flock should fail).
* fcntl based locks, however, are in a separate namespace and are global
to a team.
* This issue was found when running webkitpy test suite, and should close
ticket #13795.
* Don't use session or team as comparison in release_advisory_lock(), as
that information might not be available anymore (e.g. when called from
Team::~Team()). This fixes#14121.
Change-Id: I9efb96cfcefe7e72b0060220c635a665e7e643cc
Co-authored-by: Axel Dörfler <[email protected]>
Handled as a 1-button mouse. We didn't really support this since the old
Macintosh ADB mouses, so let's see if that code aged well!
Change-Id: Ibed2423023e821ae4ce608f0ddbc5ac32bfbd8f7
On some Thinkpads, the extra buttons are used for the trackpoint, so
they should be reported as "main" buttons, not extended ones. An
(undocumented) information query was added to the firmware to report
when this is the case, however it is not advertised as supported by the
firmware itself by the usual mechanism.
What we do is (just as the Linux driver) detect that the tocuhpad has a
PS/2 passthrough (likely used to daisy-chain a trackpoint on the same
PS/2 port) and also advertises extra buttons (an unlikely case, it is
already uncommon to even get a middle button these days...) and assume
that the information query is available then.
When the query is available and reports the quirk, the extended buttons
are reported as 0, 1, 2 (left, right, middle), instead of extra buttons
the userland would have no idea what to do with.
Change-Id: Iad5a9e140b6e49c298dcc901f4e331a4a847d7b2
It is possible to get up to 8 extra buttons on synaptics touchpads.
On some Thinkpad models, these are used to implement the trackpoint
buttons (reported as buttons 4, 5 and 6). Since the touchpad itself has
no buttons (it is a clickpad), we may at least try to handle these
properly.
Change-Id: I5d4021e36fb3ac86ecf213c5666f9b6ddd3e2bca
The Flatten and Unflatten method should check the size according to the
matching FlattenedSize method, not a possibly overriden version.
May also fix#14128 since we avoid use of the vtable by doing this.
git_svn needs alien_svn, but we don't include this in the build repos.
Remove it from the preinstalled software, it is available in the depot
if people need it.
my.justenergy.com allows only RSA, so we can't connect there without
this. Other websites may have a similar problem.
Also improve the handling of the error, as it was giving a generic
"general system error" to the user.
Fixes#13975.
We were #defining DEBUG here, which leads to some system-wide debugging
macros being always enabled as well (PRINT_OBJECT and the like). This
should be managed only using SetConfigVar in UserBuildConfig.
Remove the unused UNIMPLEMENTED and BROKEN macros because everything is
implemented, and nothing is currently known to be broken :)
The glue code pushed 12 bytes to the stack, breaking the 16-byte stack
alignment requirement. This would be fixed by the main() prologue from
gcc, but all "init" and "fini" code (static/global constructors/ destructors)
would run with a misaligned stack.
This was already fixed for x86_64 in hrev49731. Note that the fix here
is slightly different, the pointer is realigned after it is saved to EBP
and the function epilogue restores it from EBP, so no changes to crtn.S are
needed.
This application tests the BMediaTrack/BMediaFile API and underlying
ffmpeg plugin for video decoding. You can press (or hold) any key to go
through frames in a video. This avoids debugging both MediaPlayer and
the underlying libraries at the same time.
It shows that ReadFrames is getting video frames out of PTS order.
I still don't get what's happening, but doing the cookie parsing at the
same time as the main thread is handling HeadersReceived seems to
trigger a memory corruption, and it will escape all my attempts to debug
it (adding printfs or any other slight change to the code will make it
go away). So just chage the order we do things and hope that's enough to
always avoid it.
As a side effect, HeadersReceived can now rely on the cookies being
already stored in the cookie jar, which I think makes more sense.
I still plan to rewrite the HTTP request code as a proper state machine,
instead of one long Run() function. This would allow to run it in
smaller steps, and thus group multiple requests in a single thread
(triggering them from poll, select, or similar).
Since hrev51075, locale -m changed meaning to the one expected by POSIX
(it now lists character maps, instead of giving the current language).
Since the short options may change again (locale -c is still not doing
what POSIX requires), use long options instead. This is more readable
and POSIX doesn't specify anything there so we can name them however we
want.
Fixes date parsing in Python which relies on these variables to detect
the current locale.
It was deprecated in favor of -m, but -m then changed meaning to comply
with POSIX. So restore documentation for -c, and add proper
documentation for -m.
Fixes#13733.
Unlike written in the ticket, the string length is 136 (not 135),
and the code checks for rejects anything greater or equal to the max
value. So set the constant to 137.
The domains could be deleted by other threads while we were using them
to handle incoming packets, leading to an use after free (deadbeef).
Keep a reference to the doamin as long as we need it so other threads
will not delete them.
Fixes#9721, #12567
ResizeToPreferred will only relayout the window once. Further calls will
not change anything, even if the text in the BTextView changed. So make
sure to compute the preferred size with a very high text view, and only
then, set the (rather short) english text.
This makes the text view large enough to fit the text in all languages,
and the window never changes size.
An application is allowed to set an empty drag bitmap. In that
case, the offset from the cursor doesn't matter, because there
is nothing to draw anyway.
app_server would end up confused by the empty bitmap (which has
no bits) and invalid offset (it would try to allocate a 2^16
x 2^16 pixels bitmap to fit both the cursor and the empty
bitmap), and eventually it would crash.
Fixes#13577.
It is not a good idea to have a thread get an address from the request
cache, while another thread is deleting said address as the cache has
grown too large. Add a lock around the cache access to make it safe.
- Do not update more than twice a second
- Do not use tabs, so we can reliably compute the string width
- Cleanup and tweak other parts of the code
There is still a glitch when resizing Terminal, but it isn't as bad as
before. Ideally, using the SIGWINCH signal would solve that, but it is
sent to the app only when you release the mouse after a release
operation, so in our case, it is already too late.
Creating BDateTimeFormat and BDateFormat objects is a costly operation
(it loads locale data from ICU, etc). So, we should do it only once when
the format changes, instead of doing it each time we format a date
or time.
In some languages, the buttons would end up outside of window bounds, as
changing the BTextView content does not automatically update the window
size (even with B_AUTO_UPDATE_SIZE_LIMITS). So, we need to manually call
ResizeToPreferred after changing the text.
However, this exposed another problem: the view size is computed using
GetHeightForWidth, with a width as small as allowed by layout
constraints. In our cases, there weren't much layout constraints so we
would end up asking the text view to compute its height for a width of
52px, leading to a very high window. Add some explicit sizing
constraints to the text view and language list to make sure we get a
sane size.
Also tweak the layout a little to allow the keymap menu field to be
wider than the language list view, and make the window not resizable as
that makes it much easier to keep things under control and there isn't
really a need to resize it.
Accelerant interface:
Introduce new hooks B_SET_BRIGHTNESS and B_GET_BRIGHTNESS. Brightness is
a float in the 0..1 range.
App_server:
Forward brightness things between BScreen and the accelerant.
intel_extreme:
Implement the hooks. Note that this only works for laptop panels, but
the driver will pretend to support it in other cases as well.
Screen preferences:
If the accelerant supports the B_GET_BRIGHTNESS hook, allow to set
brightness with a slider. Otherwise, the slidere is hidden and these
changes aren't visible.
The libvterm implementation was sending characters to app_server one by
one. This made it very slow to update the view and SerialConnect would
have noticeable flickering.
We now look through each line and try to find ranges of characters with
the same attributes. We can then draw each of these with a single
FillRect+DrawString. In the normal case (no special attributes or colors
anywhere), this means just one call per line, plus two for the cursor.
We just want to disable known broken ones, rather than opt-in for
working ones. This keeps the list of authentications shorter and is more
future proof.
FTDI chips send packets of at most 62 bytes of data, with a 2 byte
header. The code assumed that the chip would return at most 64 bytes,
but with new (USB2) chips this is not the case anymore. As a result,
it was skipping only the first header in a packet and leaving the other
ones in the data stream.
In Noto fonts, "thin" is another level of "light" apparently
(somewhere in between "extralight" and "medium"... lots of choice these days).
Tell app_server about it so the proper font flags can be set. This may
help avoid confusion, as Terminal (and FontDemo, in less predictable
ways) tend to pick the "thin" variant of fonts even when "regular" is
requested.
BChannelSlider (used in media preferences) used to implement its own
tooltip, which didn't really work (as it could draw only inside the
view), and had hardcoded colors.
Use the native BToolTip which was added to Haiku since then.
There is indeed more to being a maintainer than just commiting changes
to Haiku main tree. Removing people from there without asking them first
seems a bit rude.
Also update creadits for translations from Pootle generated ones.
Applications can control the 256-color mode and change the palette. This
was not much used until now, but our terminal is now advertising itself
as xterm-256color. Mutt noticed this, tried to use the escape sequence,
and crashed Terminal here.
This allows us to get meaningful result for the system volume, which
would otherwise scan both hpkg files, and their whole contents as
mounted in the system/ hierarchy. Now only the packages are seen.
Directories are not ignored, so system/ (which is a different mount
point) will still be browsed, and system/packages (which is a
shine-through) will be found and counted in the used space.
- Use separate file panels for "load" and "save" directions
- Change the message sent by the "load" panel according to the protocol
to use (it just forwards the one from the BMenuItem used to invoke it,
which already has the protocol information).
Add a generic FileSender interface, which XModemSender implements. Add a
new RawSender which implements the same interface.
The RawSender currently blocks the application thread while sending,
which is not a good idea. Will rework this when I allow cancelling
transfers before they complete.
We had everything in place, except we never actually sent the command to
the device.
Note that the other drivers (prolific, etc) as well as pc_serial need to
be updated as well (might do it when I get access to hardware where I
can test the changes).
When using BAffineTransform, the update rect is not in the same
coordinate space as the drawing rectangle. Hence, testing them for
intersection does not work, and leads to not drawing buttons which are
in fact visible.
Moreover, the code in BControlLook does not perform only drawing, it is
also expected to update the drawing rect, so other functions may reuse
it later (for example, drawing a button border also computes the
rectangle for the button background). Because of this, it is not
possible to skip the drawing completely, or we could break the layout of
the client.
Fixes#13664
Interaction between ConstrainClippingRegion and transforms leads to
button frames and background not being drawn at all.
Also shows another problem with rounded corner buttons when mixed with
transforms.
ConstrainClippingRegion was used in BControlLook to limit drawing to
inside the update rect. There are two problems with that:
- It would ignore any other clipping set by the application, as calls to
ConstrainClippingRegion are not cumulative,
- ConstrainClippingRegion ignores transforms on the view, so on a
transformed view, we would not draw anything in most cases.
If constrained clipping is needed here, it should be achieved using
ClipToPicture instead.
Expanded window items are listed right under the team item. So, it is
not needed (and a waste of space) to repeat the team name there.
Detect two common patterns for adding the application name to windows:
AppName: Window
and
Window - AppName
Remove both from the item labels, leaving a little more space for useful
information in DeskBar.
- The XHCI version register is at offset 2, but we can't do a 32-bit
read at that address. Instead read at address 0 and shift. Fix a freeze
on my system (this register is currently used only for tracing, but I
noticed my USB controller implements version 0.96 and not 1.0 of the
spec, so maybe this will have to change). All other registers in the
capability area are already properly aligned.
- Usual printf type mismatch error in xhci.cpp.
On an empty line terminated by \n, we would access the temporary buffer
(stack allocated) with an index of (uint32)-1. On 32bit machine this
would just read the byte before the array on the stack, but on 64bit it
would crash.
Check that the length is at least 1 before trying to access a character
in the array.
Fixes#13625.
Thanks to accessays for proofreading the code:
It is too similar to the long format and does not add much value.
And it creates some problems with using a locale format with another's
string.
Fixes#11343.
The default error handling code in libpng uses setjmp/longjmp. This is
annoying, because stack variables may be corrupt, unless they are
declared volatile.
Instead of declaring everytihng volatile, we can tell libpng to use
custom error functions, which will throw a C++ exception, making the
code more readable and less crashy.
Also handle the png_read_end function returning errors without failing
the whole decoding. This happens for example in the old diskusage
documentation screenshots, where this function fails after the image was
completely and correctly decoded. Ignoring the error lets ShowImage show
these pictures.
Fixes the crash reported in #6775.
This is a common extension to XMODEM, which replaces the checksum with a
more resilient CRC.
The receiver must explicitly enable this, so if the receiver doesn't
handle it, the traditional checksum is still used. Hence, this is
backwards-compatible with XMODEM.