Commit Graph

62999 Commits

Author SHA1 Message Date
Augustin Cavalier
5433e7e27d MultiAudioNode: Print a message when rejecting buffers.
This file just uses fprintf(stderr, ). Probably it should be
converted to use macros...

This allows for easy debugging of silence by restarting the media addon
server in a terminal. Eventually we should fix #17245.
2021-09-09 16:08:00 -04:00
Augustin Cavalier
37ea891aad Enable -fvisibility=hidden on static libraries by default.
Only on non-GCC2 for now, as GCC2 does not have -fvisibility.

An opt-out is left as a possibility, and is unfortunately necessary
for libshared and libicon, as these two are used even in WebKit instead
of linking to the .a. However, libcolumnlistview, libagg, and a whole
bunch of others are now no longer exported, so this is already a major
improvement on what symbols we were leaking.

This may provide performance differences for consumers of these APIs,
as GCC and the linker are now free to merge and directly use functions
that previously could have been semantically interposed. AGG usage in
app_server, especially, may benefit.

We can also now remove the addition from libnetservices, so do that.
2021-09-08 17:32:47 -04:00
Augustin Cavalier
03980b1fb0 build: Make LinkAgainst recursive for static libraries.
That is, it will now pull in NEEDLIBS and LINKLIBS set by LinkAgainst
from static libraries also built by Jam. This allows specifying what
libraries other static libraries need only once (in most cases;
occasionally things are not evaluated in a sane order and then
this does not quite work.)

Use this for libnetservices.a, which needs libshared.a, so that
dependencies on it do not have to be declared within most in-tree
consumers of libnetservices (e.g. Package Kit, http_streamer, etc.)
2021-09-08 15:03:06 -04:00
Augustin Cavalier
0c69dde91f Jamfiles: Add missing link against libshared to two apps.
They still built succesfully because currently we leak a lot of libshared
symbols into libbe (or even libroot!). That will change in upcoming commits.
2021-09-08 14:57:33 -04:00
Augustin Cavalier
90f9eb2190 NetworkStatus: Remove TARGET_PLATFORM_HAIKU_COMPATIBLE test.
We no longer build things for BeOS.
2021-09-08 13:40:21 -04:00
Niels Sascha Reedijk
0b86520c4d BString: add support for move semantics with C++11 and up.
This implements the "rule of 5" for this type. While the copy operation for
BString was already using shallow copies of the underlying data, this change
further optimizes moving the data from one object to another.

While it is not the intention to implement move semantics to all types in the
legacy Haiku/Be kits, data types like BString are good candidates, because move
operations are often useful when working with data within an application.

In this implementation, the internal data of the string object will be set to
NULL, thus leaving an empty string.

Change-Id: I16bf9424f9b17f622b0b57659b80628e18760288
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4428
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-08 07:07:36 +00:00
Augustin Cavalier
3cf06bfc6b libnetservices: Set -fvisibility=hidden (on non-legacy GCC.)
Otherwise, the symbols will be re-exported into whatever shared
libraries the static library is linked into, and potentially conflict
with other applications that also linked against some other version
of the same library and symbols.

Fixes #17134, or at least the crash portion. I couldn't get any
audio or video to play here, they seemed to just cause WebKit to
stutter and hang a lot when trying to load pages with them. Maybe
that's expected behavior, though?
2021-09-07 19:32:37 -04:00
Augustin Cavalier
5c7bfa02d0 mixer: Remove "Haiku" from the displayed name and info.
We are no longer running these addons on BeOS.

Change-Id: I4baa562bfdfaab56a92689c29d068ec59b2ee9d0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4433
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-07 20:46:19 +00:00
Augustin Cavalier
f91a86c46f Cortex: Bounds checks in AudioFilterNode::processBuffer.
Processing more than framesRemaining leads to buffer overruns.
2021-09-07 16:18:22 -04:00
Augustin Cavalier
dc912367ae Cortex: SpecializeTo() once more before creating the operation.
If the incoming node is still pretty generic, we have to specialize
the input format to the output format in order to not be left with
wildcards.

Additionally, ensure that the frame sizes match up. MultiAudioNode
silently rejects buffers that are not sized precisely as it wants
them, so we need to attempt to have equivalent frame counts
on either end.
2021-09-07 16:17:31 -04:00
Augustin Cavalier
4f7febcdf2 Cortex: Use format_is_compatible and SpecializeTo() where applicable.
Same as the prior change to MultiAudioNode. Should not be a functional
change here, as this code looked pretty correct as it was.
2021-09-07 16:15:34 -04:00
Augustin Cavalier
3006aae081 Cortex: Use bytes_per_frame in another case.
No functional change.
2021-09-07 16:14:25 -04:00
Augustin Cavalier
3a7aca9728 Cortex: Use B_AUDIO_SIZE_MASK instead of a constant.
No functional change.
2021-09-07 16:13:59 -04:00
Máximo Castañeda
c634a5cf32 nVidia driver: gcc2 build fix
Change-Id: I6b3f7d25ef66bd5789aa12dbccfd8e9da9701c0f
2021-09-07 21:08:00 +02:00
Augustin Cavalier
223769c60c multi_audio: Clean up formats reporting support.
* We are no longer on BeOS and can now use format_is_compatible
   and format->SpecializeTo.
 * Remove set-but-unused media_format in node_output.

This allows AudioAdapter to connect to MultiAudioNodes.
However, no sound is produced. I have yet to determine why.
In the meantime, this seems to at least not break audio.

Change-Id: I983a496556c52a4ccde0c2cd165c659d597b84c3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4432
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-07 17:06:00 +00:00
Rudolf Cornelissen
b66c201f91 nVidia driver: for PCIe map framebuffer correctly (64bit) 2021-09-07 09:24:17 +00:00
Augustin Cavalier
ec16c2aedc media/mixer: Disable and remove USE_MEDIA_FORMAT_WORKAROUND.
Apparently BeOS' SpecializeTo() was broken, and so when this code
was introduced in 2003, it came with its own copies of the
specialization routines.

We don't run on BeOS anymore, and our specialization routines
appear to be identical to these, so, we can drop them.

Should not result in any functional change.
2021-09-06 20:35:52 -04:00
Augustin Cavalier
7ba8de3cac Media nodes: Add missing "const" around usages of media format wildcards. 2021-09-06 20:34:38 -04:00
Augustin Cavalier
1640b4de64 multi_audio: Style and dead code cleanup.
No functional changes intended.
2021-09-06 19:52:30 -04:00
Augustin Cavalier
2e8023b371 libroot_build: Use "=" instead of "+=" for clarity's sake.
No functional change.
2021-09-06 17:01:25 -04:00
Augustin Cavalier
86b6d54b46 listusb: Fix typo in usb_audio descriptor printing. 2021-09-06 16:50:27 -04:00
Augustin Cavalier
906fe09778 libroot_build: Rework path normalization to not rely on system calls.
This path normalization was functionally a recursive lstat(), which
should theoretically be identical to rooting the path in the CWD
and then normalizing the rest of the components after that.

Well, a recursive lstat() is much slower than simple manipulation.
How much slower? Well, on my system, the existing lstat() version
took up a combined total of 63,284,607 us for building haiku.hpkg
(only the package itself, no other components rebuilt), while
this new version uses just 47,901 us -- and this just for a @minimum!

I performed a full @nightly build with both versions in use at once,
with an abort() in place if paths ever did not match, and it
did not fire once. (I even sabotaged the new function just to
ensure that it would actually find differing paths.)

This code was merged in 338b8dc301 (2005),
and has remained largely unchanged since then. I don't know what the
rationale was at the time for using this method instead of this much
simpler version. Perhaps the 3-argument normalize_dir_path was written
first and used more, while this 2-argument version was added later
as a simple shim? But the original commit has no uses of the 3-argument
version aside from the 2-argument one...

Either way, this is an absolutely unbelievable speedup to Haiku builds.
These functions are hit in every I/O operation of all libroot_build
users, and their usages really do add up, as the example above shows.

Fixes #16288.

Change-Id: Ia11f64b0d4106ee62f22741a32ccc0c75c184442
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4427
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2021-09-06 20:49:37 +00:00
Augustin Cavalier
1ea3818ff5 LocaleRules: Ignore errors in ExtractCatalogEntries.
It seems GCC has the same behavior as Clang now, so we can ignore
errors generated while preprocessing. (Previously we did anyway,
before the recent commit adding -e to JAMSHELL flags, so this
just continues previous behavior.)
2021-09-06 16:45:13 -04:00
Alexander von Gluck IV
7068c45485 system/uart: refactor debug_uart, fix arm uart
* Drop ArchUART8260 layer to reduce complexity. It's whole
  existance in life was to adjust the mmio alignment.
* Fold architecture mmio alignment into DebugUart
* We could potentially pass a Init(int mmioAlignment)
  arg in the future if the macros get too messy.
* Move Barrier code back a layer into DebugUART
* Fixes the arm uart and EFI build

Change-Id: I0f127d902993e9f6e6a03cac8c7c37c0363134bf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4422
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-06 20:37:14 +00:00
Augustin Cavalier
34fef46b06 configure: Pass -e to JAMSHELL.
We have a number of "actions" blocks in our Jam rules with more than
one command, and so without -e, the actions will only fail if the last
command does. This is clearly not what was intended in virtually all
cases, so we should pass -e to the shell to ensure any command failing
causes the whole actions to fail.

I am kind of surprised that nobody noticed this before now, even
in the original Jamrules going back to the Perforce days. I only
noticed it because I experimented with making "rm" fail to find
places where it was invoked instead of $(RM)...
2021-09-06 16:02:17 -04:00
Augustin Cavalier
db0b7d8401 build: Use $rmAttrs and $(RM) in more places instead of 'rm' directly.
Should not result in a functional change in most cases, but it might
on some systems without full xattrs or emulation.
2021-09-06 15:59:44 -04:00
Augustin Cavalier
d8ffdea39e build/scripts: Add missing set -e to rm_attrs. 2021-09-06 15:58:03 -04:00
Alexander von Gluck IV
08d9e48492 servers/bluetooth: Fix scaling of deskbar icon
Change-Id: Id83a1aeb9736be1d08ba10bb52ab81f2cab11625
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4426
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-06 16:22:31 +00:00
Adrien Destugues
85ab8ef650 ps2 synaptics: don't spam the syslog when nothing happens
Some logs are emitted even when nothing at all is happening, constantly
spamming the syslog. Log them only the first time they happen.

Change-Id: I81511a7ce245c2141fa3dcd141b2f3732d9b51ad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4424
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-05 23:49:44 +00:00
Adrien Destugues
fdbbdccc05 ps2: allow more selective tracing
In some cases, we don't need the full tracking of every byte received at
the PS2 level, but higher level traces from specific devices will be
enough.

Change-Id: I31984e6b7784b5d033b457f43f3793f772213f4a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4423
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-05 23:49:44 +00:00
Augustin Cavalier
cadaf7583f XHCI: Resolve TODO about referencing the specification in isochronous handling. 2021-09-04 13:12:25 -04:00
Augustin Cavalier
16414ce406 USB: Add assert that GetObjectNoLock is only called from the debugger. 2021-09-04 13:11:31 -04:00
Augustin Cavalier
549e9a3cdc USB: Adjust comment about stack drivers for clarity.
No code changes.
2021-09-04 13:11:02 -04:00
Alexander von Gluck IV
4a70391472 arm: make sure fdt bus_mananger is added for arm
* Fixes build and arm arch alignment for
  AddBootModuleSymlinksToContainer

Change-Id: I39c8270623bf00e484c5eb0335be6da33f1604aa
2021-09-03 17:34:42 -05:00
Augustin Cavalier
39fb148abd UHCI: Disable isochronous transfers support.
It busyloops, and at least on QEMU, does not seem to work at all.
2021-09-03 17:27:48 -04:00
Augustin Cavalier
b99d228dce usb_audio: Set real_time from the time during device buffers exchange.
As opposed to driver/userland buffers exchange. This is what the other
multi_audio drivers do.
2021-09-03 17:27:10 -04:00
Augustin Cavalier
ccb3e7120c usb_audio: Clean up buffer management.
* Get rid of fPacketSize and use fSamplesCount in GetBuffers instead.

 * Clarify logic in _TransferCallback.

 * Properly multiply in kSamplesBufferCount to fAreaSize
   (this should be the only functional change in here.)

The larger buffers (now similarly sized to HDA at least in the
default cases of 44100 or 48000) seem to help with jittering
and discontinuities, which are significantly reduced now,
at least under emulation.
2021-09-03 17:25:21 -04:00
Augustin Cavalier
34352671ed usb_audio: Yet more code cleanup.
Slight logic tweaks but no real behavioral changes intended.
2021-09-03 17:21:47 -04:00
Augustin Cavalier
7a3c48b407 kernel/apic: Add missing include.
This only is needed on certain build configurations for some reason.
Thanks to augiedoggie for reporting.
2021-09-03 13:53:51 -04:00
Augustin Cavalier
d92c60dc03 multi_audio: Rework validity checks in the constructor.
In hrev55048, checks were added to bail on initialization if invalid
audio formats were present either in inputs or outputs, which broke
any audio nodes that supported only one or the other. Now, instead,
we check channels first, and even then do not bail on invalid formats,
but simply do not declare support for inputs or outputs respectively.

This solves the initial cause of #17235. However, that ticket refers to
an unrelated problem this bug merely exposed, and so it should remain
open until that is resolved.
2021-09-03 11:18:27 -04:00
Augustin Cavalier
625b5fc8fa XHCI: Use a more approriate error code.
Stalls cause "HALTED" conditions on endpoints, so use B_DEV_STALLED.
Also clarify the comment referencing the specification, and add a
missing linebreak to the error message.
2021-09-03 11:15:48 -04:00
Augustin Cavalier
7b2bc8351a usb_audio: Properly separate kernel and userland data.
* Allocate the descriptors array separately from the data area.
 * Clone the data area for kernel use separately from userland use.

Fixes the remaining SMAP problems with this driver.
2021-09-03 11:14:34 -04:00
Augustin Cavalier
140c408d7b usb_audio: Correct mixup between Input terminals and Input streams.
An "Input" terminal in USB audio terms refers to any stream of audio
going "in" to the USB device, whether that be from the outside world
(e.g. a line in jack) or from the computer (e.g. via USB OUT endpoints.)

So we cannot rely on the terminal type to tell us whether it is an in
or an out for our purposes, we have to check the stream type, and then
use that to declare to multi_audio what kind of stream we have.

Fixes USB audio mixing up inputs and outputs, especially on devices
that only have one or the other and not both. (QEMU manifested
this problem.)
2021-09-03 11:13:29 -04:00
Augustin Cavalier
3f7da9312e usb_audio: Code cleanup.
No functional changes intended.
2021-09-03 11:08:18 -04:00
Murai Takashi
95682340fb lgtm yml: remove buildtools archive after unzip it.
This may help fixing lgtm build failure "There is not enough space on the disk".

Change-Id: I5db5748b73e611ec6b66a8effdf5ad39969f9bde
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4415
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-03 11:49:54 +00:00
Augustin Cavalier
e755ecb584 USB: Move usb_iso_packet_descriptor to a separate header.
The USB Kit uses it, so this allows the USB Kit to stop including
USB3.h.

Change-Id: Ifde025ec41bef92013fda0440d60b7216cfdbe4a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4413
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-02 16:00:17 +00:00
Gerasim Troeglazov
9ac8709cef CodyCam: fix position and size for ControlWindow
Change-Id: I8a305cab294c788179d8e81d12a9be768d5fb925
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4406
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: John Scipione <jscipione@gmail.com>
2021-09-02 15:52:07 +00:00
Augustin Cavalier
2331cde84f XHCI: Fix RemoveEndpointForPipe.
It seems this has been broken since I originally wrote it in 2019,
but it only gets called in two scenarios: on device unplug (where
it does not really matter), and on interface changes (where it does.)
Apparently very few people tried to use devices that depend on interface
changes, because those would have been totally broken by this.

There were actually two bugs here:

1. ConfigureEndpoint should not be called with the Deconfigure bit set.
(See inline comment.)

2. The first bit must be set in the context add flags.

Fixes #14971 at least, and possibly others as well.
2021-09-01 19:48:19 -04:00
Augustin Cavalier
ad245b6cdb XHCI: Fix endpoint flags bits macros.
There can be up to 32 endpoints, so the correct mask is 0x1f.
Checked against FreeBSD.
2021-09-01 19:44:37 -04:00
Augustin Cavalier
22002cf4a5 USB: Rename usb_endpoint_companion_descriptor...
...to usb_endpoint_superspeed_companion_descriptor, as it is
really SuperSpeed-specific (there are more companion descriptors
introduced in SuperSpeedPlus.)

No functional change, and this is a private struct at present.
2021-09-01 14:41:12 -04:00