to scan loaded libraries, too, as the dependency on network libraries may not
be present in the executable image, but may be "hidden" in one of those
library images (as is the case with Beam).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26277 a95241bf-73f2-0310-859d-f6bbb57e9c96
* fixed broken while loop
* call _InitObject also from the archive constructor
* just noticed while trying to load the R5 epson printer driver, still not working...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26275 a95241bf-73f2-0310-859d-f6bbb57e9c96
* fixed several byte order inconsistencies, it does not make sense to always
convert the byte order input/output values - no we convert where it can
be expected and leave it where it is confusing
* fixed size inconsistencies with respect to family and port, both of which
were sometimes handled as int8, as int16 and as int32 in different places
(now they are always int16)
These fixes make Beam connect to the correct address and port, but it still doesn't work, as it seems to be using UDP instead of TCP (doh!). Will look into that tomorrow.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26269 a95241bf-73f2-0310-859d-f6bbb57e9c96
automatically selected at boot time. Pit and Apic timers are implemented
for now. Thanks Dustin!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26265 a95241bf-73f2-0310-859d-f6bbb57e9c96
either the selected items, or the entire list if nothing is selected.
* Small cleanups here and there.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26264 a95241bf-73f2-0310-859d-f6bbb57e9c96
the Controller would keep the last audio/video track index across files
(which would be nice for certain situations).
* Better error message for unsupported files, especially for the
B_MEDIA_NO_HANDLER error.
* In the Controller, try to obtain the track duration and ignore tracks that
return a bogus duration. I have some MP3 files on ZETA that are obviously
not handled correctly by the ZETA mp3 decoder. Previously, the player would
just sit there and appeared to have some other internal error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26261 a95241bf-73f2-0310-859d-f6bbb57e9c96
* adjacent vecs are now joined.
* partial invalidation no longer frees all cached extents.
* the array can now be larger than the needed number of entries, allowing
for a saner array allocation policy.
* it does no longer read the whole file map when the first translation is
requested, but only as much as required (it will still ask the file system
for the maximum file size, but it won't traverse further as long as the
initial request is fulfilled).
* This should help a lot with the ext2 file system that doesn't support real
file extents (but keeps a list of blocks).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26260 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Moved the file_extent array into its own structure (unnamed union problem
with GCC4), and added max_count field (currently unused).
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26259 a95241bf-73f2-0310-859d-f6bbb57e9c96
when looking up the target area on free(). This makes free() scale better with
large area counts, as the lookup can abort early when it knows that no area
below the only candidate can contain the address.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26258 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Fixed most of the warnings resulting from that by removing actually not used
variables or moving declaration into the #IF. Left unused functions there
though, as I wouldn't know if they are supposed to be used again.
* Fixed two statements with no effect (clamping to MAX_ANCILLARY_DATA_LEN in
socket.cpp and unsetting fCounterSem in MessagingService.cpp).
* Some style cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26253 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Rename sHeapList[] to sHeaps[], as there are no heap lists anymore.
* Rename the debug defines to be even more obvious.
* Also initialize allocations by area with non-null values when being paranoid.
* Disabled some debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26252 a95241bf-73f2-0310-859d-f6bbb57e9c96
find our own dummy page. This is equivalent to not finding a page at
all. Fixes#2471.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26248 a95241bf-73f2-0310-859d-f6bbb57e9c96
size. Removes a bit of overhead (call and mutex_lock / mutex_unlock).
* Don't fail if there is exactly enough memory available to satisfy the
reserve request. Not that it would really matter as it's rather an edge case...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26246 a95241bf-73f2-0310-859d-f6bbb57e9c96
wrong pages when allocating a page run unless the run started at page 0 as the
start offset was missing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26245 a95241bf-73f2-0310-859d-f6bbb57e9c96
empty and there is another empty area already, it is now removed from the
heap and the underlying area is deleted.
* Fix grow suggestions to be based on 20% of a grow size instead of 10% of the
current page count, as the current page count obviously gets larger over time
making 10% of it larger than the grow size itself.
* Fix non-urgent grow request handling so that not two areas at once get added.
* Made some of the debug output more useful, turned off some other and fixed
some comments.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26244 a95241bf-73f2-0310-859d-f6bbb57e9c96
wouldn't be passed the syscall start time anymore. Fixes weird syscall
timings when using strace.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26243 a95241bf-73f2-0310-859d-f6bbb57e9c96
menu name, ie. "(unnamed Ext2 File System)" could become "(12.5 GB Ext2 File System)".
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26242 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Missing backslash in UPDATE_THREAD_KERNEL_TIME() macro. Caused the
thread's kernel time never to be updated when the thread left the
kernel. The time would be added to the user time instead.
* Changed semantics of thread_at_kernel_exit(). It leaves interrupts
disabled when returning, now. All code using it would disable
interrupts afterwards anyway, and inbetween the thread could be
interrupted causing two more time updates (or actually not causing
them erroneously).
* The code in x86's interrupt handler entry (int_bottom) also checks
thread::in_kernel now, to determine whether the thread was already
considered to be in userland. This is necessary since the sysexit
instruction doesn't reenable interrupts, so that we have to do that
with the preceeding instruction. Hence an interrupt can occur
inbetween, which would incorrectly add the interrupt's kernel time
to the thread's user time.
* For userland threads team_create_thread_start() didn't invoke
thread_at_kernel_exit() or any equivalent. We do that in
arch_thread_enter_userspace() now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26240 a95241bf-73f2-0310-859d-f6bbb57e9c96
are high that Pe is installed, if not, StyledEdit is used anyways. Also
Firefox is more likely to be present on these days images than NetPositive.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26238 a95241bf-73f2-0310-859d-f6bbb57e9c96
there is only one heap_allocator for each heap class. Instead of adding
complete allocators, individual areas can now be added to existing allocators.
This removes a lot of complexity in the frontend code and avoids the previous
duplications wasting resources (allocator lock, bin sizes, bin list).
The pages are now managed in heap_area structures that are attached to areas.
They store the page table, page free lists and local variables. The same
mechanism as used for heap_pages is now used for heap_areas too, i.e. they
are kept in a sorted list where the fullest but not yet completely full area
is always at the top. This favors areas to become completely full and other,
not as frequently used areas, to become completely empty over time so they can
be freed. Full areas are removed from the list, so they do not need to be
looked at/skipped when allocating new pages. Through this mechanism and as
there are no allocator lists anymore that grow bigger over time, allocations
should be far more scalable. Note that actually removing areas once they are
not needed anymore is still not implemented, but it is now a relatively easy
addition whereas previously it would have killed the whole design.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26237 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Since there is no "Haiku license", I replaced that with a reference to the
MIT license as usual.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26236 a95241bf-73f2-0310-859d-f6bbb57e9c96
Patch by Mika Lindqvist. Could we give give him Commit access?
I am getting daily patches from him with fixes and new features.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26227 a95241bf-73f2-0310-859d-f6bbb57e9c96
the thread issuing the command called acquire_sem_etc() on the semaphore
that the interrupt handler would otherwise release. The semaphore is now
released unconditionally, but to prevent the race condition that the
B_RELEASE_IF_WAITING_ONLY was trying to avoid, it is released with the
spinlock held.
* The error interrupt handler did not reset the fCommandsActive flag, but
it seemed to us like it should do that.
* WaitForTransfer now also acquires the spinlock to reset fCommandsActive,
which may be unnecessary but does not harm either.
* Cleanup of some long lines, sorry for mixing that with the actual fix.
Fixes bug #2359 (long pauses when accessing the disk).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26223 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Turn off text cursor when switching to text mode.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26222 a95241bf-73f2-0310-859d-f6bbb57e9c96
them with the ROUNDUP macro that was specifically made for this task so that
too tired developers do not mess up the calculations...
* Don't use area allocation during kernel startup (not that it really happened).
* Minor simplification of similar calculations in heap_attach().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26221 a95241bf-73f2-0310-859d-f6bbb57e9c96
contiguous pages, it will request growing even if there are still more than
10% free pages available. Previously that case was not handled anymore and the
allocation would have just failed. Note that this is a pretty rare case, as
there are no "large" allocations happening in either the small or large heap
classes, but only in the huge one for allocations between 128KB and 1MB.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26220 a95241bf-73f2-0310-859d-f6bbb57e9c96
does in fact happen, as there are objects used in the kernel that allocate
with new, which in turn uses the heap. The OpenHashTable used from the slab
allocator hit this case during an svn checkout here, because it grows it's new
allocated list by doubling the list size. Added some unconditional debug
output for those cases to monitor the usage for now. All of that not yet really
tested though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26216 a95241bf-73f2-0310-859d-f6bbb57e9c96
that looks like a compiler bug to me, though.
* Pulled struct data_stream out of the union (now called ext2_data_stream),
based on a patch by Maurice, thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26214 a95241bf-73f2-0310-859d-f6bbb57e9c96
ext2_super_block::first_data_block must be used; the superblock offset
doesn't matter if the block size is greater than 2KB.
* Fixed block access beyond the 4GB limit - we need to cast the block to
a 64 bit type in ext2_get_file_map() before shifting it.
* Tested with various larger ext3 disks, and everything seems to work fine.
* Added some optional debug output.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26213 a95241bf-73f2-0310-859d-f6bbb57e9c96
(it didn't really work previously anyway). The only alignment really used seems
to be B_PAGE_SIZE, which happened to always work out before, because anything
larger would have been allocated using individual pages anyway. Since larger
bins are now available and with kernel heap leak checking enabled an allocation
of B_PAGE_SIZE with B_PAGE_SIZE alignment is actually a bit bigger than
B_PAGE_SIZE, it got into the 5KB bin, which didn't guarantee the alignment
anymore. This would have caused a tripple fault on boot when kernel heap leak
checking was enabled. The alignment is now taken into account when picking
the bin for the allocation. Added a more detailed TODO as to why this isn't
the best thing (wastes space) and how it could be changed if deemed necessary.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26212 a95241bf-73f2-0310-859d-f6bbb57e9c96
Implemented the needed fs API hooks to support identifying partitions
(so ReiserFS partitions appear in the Tracker Mount menu now).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26211 a95241bf-73f2-0310-859d-f6bbb57e9c96
serve, bin sizes and page size. This minimizes the amount of "large"
allocations made in heaps that don't have a bin for the allocation size
(combining multiple pages). This is desirable as such large allocations
are generally pretty inefficient, and also because it separates larger from
smaller allocations better, making the chance of a heap becoming empty higher.
For now there are three heap classes "small", "large" and "huge", with a
predefined set of bin sizes for each. This might need some finetuning later on.
Reduce the grow size to 4MB though as the allocations should now be spread
across heap classes which each grow on their own.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26210 a95241bf-73f2-0310-859d-f6bbb57e9c96
allows for dynamic (heap)page sizes. It's currently just set to B_PAGE_SIZE
but I'm expermienting with the creation of differently sized heaps that could
use dynamic page sizes with that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26203 a95241bf-73f2-0310-859d-f6bbb57e9c96
Report the index where the event opcode pair has been found.
Currently server was expecting them to be the first entry of the request
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26198 a95241bf-73f2-0310-859d-f6bbb57e9c96
the cancel, it wasn't actually done. This could bring a device out of sync in
the case timeouts actually happened (which shouldn't be a commen case).
Fixed that and increased the timeout to 2 seconds in favor of slower devices.
Might need some fine tuning later still.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26197 a95241bf-73f2-0310-859d-f6bbb57e9c96
Avoid unhandled event in the bluetooth_server
by Mika Lindqvist
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26196 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed race conditions when a ServerApp or ServerWindow is created. The
reply to the client that the object has been created successfully was
sent in the thread creating it. Preempted at the wrong time (right after
writing the message to the port) could lead to the object's thread using
the link at the same time, which would screw up all subsequent
communication via that link.
This fixes the problem that mimeset would sometimes fail when building
Haiku in Haiku (can't find the ticket). It probably also fixes#2331,
and the bug that sometimes when a window is opened (Terminal, crash
alert, shutdown window, etc.) it would come up with huge width/height
and tiny other dimension (can't find the ticket).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26192 a95241bf-73f2-0310-859d-f6bbb57e9c96
* It's not yet complete, doesn't support some ext2 stuff (like files over 4 GB),
and might have some other bugs (I only tested it with a single 20 MB ext2
image).
* To have a read/write ext2 file system, it would probably make more sense to
port GNU sources (like ext2fs lib), and use that. But a small read-only ext2
file sytem doesn't hurt, I think, and I don't know if ext2fs lib would be
feasible for kernel use (porting the file system from Linux directly would
also be an alternative, but probably more work).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26187 a95241bf-73f2-0310-859d-f6bbb57e9c96
the newly found disk systems.
* _ScanPartition() now allows to restrict the disk systems to a predefined set.
* _ScanPartition() now even scans partitions that already have a disk system
assigned; if a better one is found, the existing one is replaced. It will
ignore mounted or partitions with children, though.
* KPartition now also stores the priority of the disk system assigned to it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26177 a95241bf-73f2-0310-859d-f6bbb57e9c96
correct, but it prevents a deadlock that could sometimes be seen right after
booting when the Terminal was supposed to draw the decorator buttons. It
doesn't seem to cause any problems with locking removed (the original drawing
code didn't lock either). Added a TODO to investigate and eventually fix that
though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26170 a95241bf-73f2-0310-859d-f6bbb57e9c96
VLC, which for some reason calls CountItemsUnder(NULL) quite a few times on startup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26167 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Use the platform object to determine the platform type in system_info.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26166 a95241bf-73f2-0310-859d-f6bbb57e9c96
per cache.
* Changed the strategy vm_cache_acquire_page_cache_ref() uses to ensure
that the cache isn't deleted while trying to get a reference. Instead
of the global cache pages hash table lock, it holds the global cache
list lock now. We acquire + release this lock in delete_cache() after
removing all pages and just before deleting the object.
* Some small optimizations using the property that the cache's pages are
ordered, now (vm_cache_resize(), vm_page_write_modified_page_range(),
vm_page_schedule_write_page_range()).
* Replaced some code counting a cache's pages by simply using
vm_cache::page_count.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26160 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Suggest growing when there are less than 10% free pages in the last heap.
Previously it would suggest growing when there were less than three free
pages, which wasn't really any good measure. In quite a few cases this could
have lead to too late growing and running out of heap space.
* Only panic when memory allocation fails while growing kernel heaps. Otherwise
just output a message and return NULL. Even this panic is not really
necessary and should be continueable, but for now I'd like to see if this
situation actually happens.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26157 a95241bf-73f2-0310-859d-f6bbb57e9c96
Grep declares it "working" when strerror_r returns a string, while POSIX says
it should return int (as we do). Don't know where this config define came from,
as we do not have any headers advertizing it wrongly. This fixes bug #2450.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26156 a95241bf-73f2-0310-859d-f6bbb57e9c96
protect the bfs_read_fs_stat() and bfs_write_fs_stat() functions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26154 a95241bf-73f2-0310-859d-f6bbb57e9c96
screen mode from the command line.
* With its "--fall-back" parameter, it's also thought to be called from BWindow
when a specific shortcut has been pressed (similar to screenshots) - this
part is not implemented yet. Anyone against <Command><Control>-<Escape>?
* Added it to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26150 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed logic error in CountItemsUnder() that would sometimes
return the wrong count. This would result in issues such as
Vision's network reordering failing to reorder down due to
retrieving the wrong item based on the count.
This fixes ticket #2447.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26149 a95241bf-73f2-0310-859d-f6bbb57e9c96
a problem in the OSS media node which also affects at least the ZETA 1.2
MediaPlayer on ZETA.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26143 a95241bf-73f2-0310-859d-f6bbb57e9c96
* RealTimeForTime() did not work without VideoProducer. Maybe it is never
used though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26141 a95241bf-73f2-0310-859d-f6bbb57e9c96
was NULL; now it only dereferences it when "address" is non NULL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26139 a95241bf-73f2-0310-859d-f6bbb57e9c96
* With output processing enabled, replace the VERASE char by
BS SPACE BS instead of VERASE SPACE VERASE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26135 a95241bf-73f2-0310-859d-f6bbb57e9c96
call to HiliteDropTarget(true) and HiliteDropTarget(false) would come in pair on the same target.
Fixes#2453 and #1793
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26131 a95241bf-73f2-0310-859d-f6bbb57e9c96
directly on a device (i.e. has a parent), then don't indicate that we want to
support it at all, but just return -1. Most probably it is actually a
filesystem and not a partition. Indicating that we might support it a bit
could lead to the situation that the partition was associated with the intel
partitioning system in the end because the module for the actually present
filesystem wasn't yet loaded in the first initial device scan (during early
boot when looking for the boot partition).
The later rescan wouldn't touch that partition anymore as it was already
(wrongly) associated with the intel partitioning system, therefore leading to
unrecognized partitions as seen in bug #2424. By not pretending to support the
partition when we most probably don't, a later rescan that has all filesystems
available therefore has a chance of identifying that partition correctly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26128 a95241bf-73f2-0310-859d-f6bbb57e9c96
always returned B_OK) by a Init() method, which sets the initial size
and returns an error, if that fails.
* Adjusted code using the classes accordingly. Replaced a few
InitCheck() methods in the network code by Init().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26127 a95241bf-73f2-0310-859d-f6bbb57e9c96
writing zeros into it in a real time thread.
* Use a different method to calculate the drift. The old method would generate
a stable drift value after some time, but somehow the drift gave problems
after a while. For example on Haiku, the MediaPlayer would stop playing
stuff after several hours of uptime. The new method calculates the drift
for just the last written buffer, like the Multi-Audio node does, but
averages the result over the last 64 drift values in order to smooth out
sudden changes. Seems to work well on Haiku, on BeOS, the sound quality seems
to be a bit worse (the BeOS mixer actually resamples each buffer according
to current drift).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26125 a95241bf-73f2-0310-859d-f6bbb57e9c96
(and if it isn't used anymore).
* vnode_low_memory_handler() now just calls it this way, so it doesn't have
to use two passes anymore, and can always write back vnodes without having
the busy flag set.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26124 a95241bf-73f2-0310-859d-f6bbb57e9c96
kMiniIconMode -> kScaleIconMode, kIconMode -> kScaleIconMode.
Switching the mode to kScaleIconMode uses a special code path that resets the view origin,
which wouldn't get a chance to be stored/restored. Other icon mode don't need to save/restore
their origin except when going to or coming from kListMode.
This fixes#2441, although i just discovered the same problem when using SwitchDir() (single
window navigation)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26121 a95241bf-73f2-0310-859d-f6bbb57e9c96
a flattened argument/environment buffer now. This simplifies the work
for the kernel a bit, since it can just copy the buffer and check
whether it looks OK instead of messing around with individual strings.
The runtime loader also gets a flattened array.
* Set the maximum size of the arguments/environment buffer to 128 KB.
When more arguments are passed, we fail with a proper error code
(instead of just truncating the arguments as before).
* On exec*() the first argument was silently replaced by the given path
name, which is not correct.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26119 a95241bf-73f2-0310-859d-f6bbb57e9c96
the app, and keeps the status of all open mails untouched.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26114 a95241bf-73f2-0310-859d-f6bbb57e9c96
currently shown mail when checked.
It just didn't make any sense the way it was before, and was inconsistent, too,
as it only affected mails opened after the current one.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26112 a95241bf-73f2-0310-859d-f6bbb57e9c96
On x86 we might want to publish isa devices like PS/2 ports if they aren't found via ACPI.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26105 a95241bf-73f2-0310-859d-f6bbb57e9c96
a bit.
* This also fixes a bug Salvatore pointed me to: Vnode would also call
put_vnode() on destruction if get_vnode() failed earlier.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26097 a95241bf-73f2-0310-859d-f6bbb57e9c96
- kernel_m68K almost links now, jsut bails out on the linker script...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26096 a95241bf-73f2-0310-859d-f6bbb57e9c96
hanging systems on boot, but probably just hides a problem somewhere else, as
the transfers should timeout on their own if the device doesn't respond.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26082 a95241bf-73f2-0310-859d-f6bbb57e9c96
unit attention telling us that the device or media status changed, which is
expected.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26081 a95241bf-73f2-0310-859d-f6bbb57e9c96
the select/deselect/readv/writev hooks. Not that it would matter as the static
memory there is cleared to 0 anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26080 a95241bf-73f2-0310-859d-f6bbb57e9c96
hook from the legacy driver.
* Add note explaining why it is set to an arbitrary invalid value (~0) and why
it still works by redirecting in the virtual Select() of LegacyDevice.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26079 a95241bf-73f2-0310-859d-f6bbb57e9c96
source bitmaps. The destination is preserved now when encountering such
transparent pixels in the source bitmaps.
* B_OP_ERASE is supposed to replace with the low color whereever a source
bitmap has a non-transparent pixel.
* The B_OP_MIN and B_OP_MAX drawing modes are supposed to select either the
source or destination pixel based on their brightness, not combine the two
pixels' color components into a new pixel. The brightness_for() function is
taken from ColorConversion.cpp in the interface kit. Probably a simpler
algorithm would do as well.
* Handle B_TRANSPARENT_MAGIC_* in all cases when drawing bitmaps with non-alpha
source bitmaps, as all modes except B_OP_COPY are sensitive to transparency.
This should make all drawing modes behave as documented in the BeBook. Except
for B_OP_SELECT, which seems broken under R5, the results compare nicely now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26075 a95241bf-73f2-0310-859d-f6bbb57e9c96
to draw a bitmap and a B_MIXED_COLORS pattern. This shows that most of the
Haiku drawing modes are off of what the BeBook documents them to be and also
shows that B_OP_SELECT is actually broken under R5.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26074 a95241bf-73f2-0310-859d-f6bbb57e9c96
level 2).
* merge_cache_with_only_consumer() marked the source cache unbusy when
it was done, which caused a race condition with the page fault code.
I accidentally introduced this problem in r25716. Fixes#2326.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26068 a95241bf-73f2-0310-859d-f6bbb57e9c96
bitmaps in B_OP_INVERT mode does not affect pixels where the source bitmap
was transparent, as noted in the BeBook. Not really sure I'm doing that right
though and probably needs looking into for B_OP_ERASE and B_OP_SELECT too.
Fixes bug #2421 though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26067 a95241bf-73f2-0310-859d-f6bbb57e9c96
a volume to the audio data. It ramps between a previous and the current volume
if necessary to smooth out the changes. The volume slider functionality is
thereby restored.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26066 a95241bf-73f2-0310-859d-f6bbb57e9c96
perfect in Haiku for me (HD Audio), while it adds a very noticable latency.
On C-Media, the difference between "policy 4" and "policy 5" is 2048 versus
32768 bytes, which is 16 times the latency. I added a note on why the same
policy on Haiku might give me troubles (C-Media versus HD Audio means
16 bits/sample versus 32 bits/sample) and if OSS does not double the buffer
size then I can see where the trouble is comming from. I should probably
figure out a more fine grained way of influencing the driver buffer size.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26062 a95241bf-73f2-0310-859d-f6bbb57e9c96
C-Media based sound card). In Haiku, I could test with HD Audio, and playback
has clicks. It doesn't seem to have to do with the "drift", which is now
correctly published, I am not sure what exactly is causing it, I would like to
test on different hardware yet.
* I have modified the buffering policy (4 will give about 2048 bytes internal
OSS buffer), which decreases the latency of the node to an acceptable value.
* I completely replaced the timesource publishing algo to be more reliable.
* Removed now unnecessary methods from OpenSoundDeviceEngine.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26059 a95241bf-73f2-0310-859d-f6bbb57e9c96
the scrollbar.
* Added notes about BeOS behavior to SetTarget(const char*).
* Reuse SetTarget(NULL) in the destructor.
* Initialize fTarget and fTargetName in the archive constructor.
* Added TODO about possibly restoring the target in the archive constructor.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26057 a95241bf-73f2-0310-859d-f6bbb57e9c96
can edit the settings file. The default are 10000 lines BTW.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26045 a95241bf-73f2-0310-859d-f6bbb57e9c96
selection which we update whenever the first mouse button is released.
This also enables copy'n'paste between Terminals.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26044 a95241bf-73f2-0310-859d-f6bbb57e9c96
updating the scroll range (ie: in ContainerWindow.cpp). IMO, the programatic ScrollBy method shouldn't depend on the
ScrollBars ranges or state. The original fix in r21336 was apparently hiding other BScrollBar or BView bugs that have been
fixed in the mean time.
The content was offseted when going back to list mode after moving icons on the left/up in icon mode. This fixes Tracker bug
#2312.
- Revert and fix changes to ContainerWindow.cpp in r18481 (cvs 1.37). The condition was broken, but it wouldn't ScrollBy()
anyway due to the previous problem. Fixing BView made the content autoscroll even if the lefttop corner of the extent was
already visible.
- Probably unrelated, fix changes to ContainerWindow.cpp in r18993 (cvs 1.38). PoseView()->Bounds().left/top < 0 is expected,
if for example in icon mode you move an icon close or crossing the left side of the window and then scroll left to adjust.
This fix ResizeToFit that wouldn't scroll the view correctly in some cases.
So we had a Tracker Bug uncovering a BView fix that was hiding another Tracker bug, everything is fixed hopefully, phew :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26043 a95241bf-73f2-0310-859d-f6bbb57e9c96
- we'll just use decimal chip number (68030, ...) to identify cpu, fpu, and mmu for simplicity.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26041 a95241bf-73f2-0310-859d-f6bbb57e9c96
the left/right cursor keys.
* Normalized the Ctrl-<cursor> escape sequences. Makes word navigation
in vim work.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26038 a95241bf-73f2-0310-859d-f6bbb57e9c96
worker thread. That sounds somehow reasonable, but has the problem that
signals to the process hit a thread that doesn't know how to handle
them. Fortunately the author already prepared the code to switch the
thread tasks. In the Terminal vim does now correctly react on window
resizes. Probably also fixes#2393.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26034 a95241bf-73f2-0310-859d-f6bbb57e9c96
wrapped to the next line and a subsequent LF would advance another line.
We behave like xterm now, i.e. visually the cursor stays on the same
line (on the last character), but the next character will be wrapped to
the next line.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26033 a95241bf-73f2-0310-859d-f6bbb57e9c96
buffer). These are the sequences our /etc/termcap uses (local less and
vim use the alternative screen buffer now). The ones already implemented
are used e.g. by the termcap of my Linux installation. A bit weird all
those different termcap files, some even with the same version
number.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26031 a95241bf-73f2-0310-859d-f6bbb57e9c96
less.
* Added /etc/vim/vimrc. Besides fixing key mappings it also disables
compatibility mode and adjusts some settings to make using vi a more
pleasant experience.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26028 a95241bf-73f2-0310-859d-f6bbb57e9c96
2KB. That's the currently recommended size of the buffer passed to
tgetent(). Our xterm entry is bigger, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26023 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Set TERM to "xterm".
* Removed unnecessary {Begin,End}ViewTransaction() in TermView::Draw().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26022 a95241bf-73f2-0310-859d-f6bbb57e9c96
been requested. The first call to a BView::Invalidate() will flush the link
so that app_server is notified as soon as possible. It makes no sense for
further calls to Invalidate() to flush also, since Flush() is not cheap. This
trick makes Invalidate() about 3.2 times faster, making it a cheaper operation.
I could not see any negative effects, I tested with apps that invalidate
multiple different parts inside a window in reaction to something. Thanks go to
Ingo who had the idea.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26020 a95241bf-73f2-0310-859d-f6bbb57e9c96
Adding some helper methods to the Local and remote devices
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26011 a95241bf-73f2-0310-859d-f6bbb57e9c96
waiting for a heap grow.
* Use that nogrow version in the VM code to avoid a deadlock with the address
space lock when a grow operation would try to create an area while a malloc
happened from such a function in the VM.
* When waiting for a grow to happen, notify the waiting thread from the grower
also if it failed to allocate a new heap. Otherwise a thread would just sit
there and wait until another thread requested growing too and that one
succeeded (or just forever in the worst case).
* Make the dedicated grow heap growable too. If the current grow heaps run low
on memory it will instruct the grower to allocate a new grow heap. This
reduces the likelyhood of running out of memory with no way to grow to a
minimum. As the growing is done asynchronously it is still possible to
happen, but it is highly unlikely as the grow heap is solely used to
allocate memory in the process of creating new heap areas and it will even
try using normal public memory if the dedicated memory has run out.
* Reduced the dedicated grow heap from 2 to 1MB. As it can now grow itself, it
doesn't need to last so long.
* Extract heap creation into it's own function that does area creation and heap
attach and use this function for growing normal and grow heaps.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26009 a95241bf-73f2-0310-859d-f6bbb57e9c96
initialization. This would lead to crashes when resizing.
* Shuffled code in ResizeTo() a bit to make it more robust in case of
error (out of memory).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26004 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Implemented alternate screen buffer support. Not used by any program
yet, since we still use the beterm termcap entry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26003 a95241bf-73f2-0310-859d-f6bbb57e9c96
- fix warning.
Note T9 could still be of use on the desktop, for ex by disabled people with enough mobility to access a numeric keypad...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25998 a95241bf-73f2-0310-859d-f6bbb57e9c96
ping requests, and those before an interface is configured.
* Added comment that explains the consequences.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25995 a95241bf-73f2-0310-859d-f6bbb57e9c96
and it does fit in the line.
* Removed extraneous whitespace.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25994 a95241bf-73f2-0310-859d-f6bbb57e9c96
knob, or actually for some reasons it didn't for me after r25969.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25993 a95241bf-73f2-0310-859d-f6bbb57e9c96
session (tab) has it's own window title. Switching between them changes
the window title, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25987 a95241bf-73f2-0310-859d-f6bbb57e9c96
on the line before the cursor.
* Implemented \ESC[1J (erase screen above.
* Fixed \ESC[2J (erase all). It shall not move the cursor.
* When scrolling only the top part of the screen, we do now also
invalidate the line below the scroll region. Otherwise the view
wouldn't know that they have not been scrolled.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25986 a95241bf-73f2-0310-859d-f6bbb57e9c96
lines would be initialized while the right ones might have remained
uninitialized. Could happen only in case that more lines were
scrolled out of the screen than there were in the scroll region.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25985 a95241bf-73f2-0310-859d-f6bbb57e9c96
screen (as vim does for instance). Should fix#2382 and #2386.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25973 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Placement of the time text was broken. With big fonts, the text was way too low. Using text bounding box now, it looks pretty and robust too.
- Fixed the height of the time view to the replicant height. The view has a fixed height now and can never overlap deskbar at the bottom (horizontal deskbar mode) or other replicant
below.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25970 a95241bf-73f2-0310-859d-f6bbb57e9c96
run of a history line would not be initialized correctly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25968 a95241bf-73f2-0310-859d-f6bbb57e9c96
* added a bit more (visual) information about the spool file format
* rename Configuration to PrintServerMessenger (still not the best name)
* remove ConfigPage{Job}Thread as both share the same code and make it privte in PrintServerMessenger
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25966 a95241bf-73f2-0310-859d-f6bbb57e9c96
synchronize with the text buffer when being re-attached. Fixes the
problem that after switching to another tab and back ongoing output
wouldn't show anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25965 a95241bf-73f2-0310-859d-f6bbb57e9c96
terminal view that is attached to the window and can receive messages at
all.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25964 a95241bf-73f2-0310-859d-f6bbb57e9c96
nasty things with the tab view.
* The tabs are named "Shell <number>" now, which is somewhat more
useful than all being named "Terminal". This is similar to Konsole and
we should probably also support setting the tab name by the user.
Until Haiku supports persistent sessions, that is not really useful,
though.
* Shift-Left/Right iterates through the tabs, now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25960 a95241bf-73f2-0310-859d-f6bbb57e9c96
* BasicTerminalBuffer::Init() no longer uses _ClearLines() to clear
the screen lines, since that expects the lines to be somewhat valid
at least and also needlessly updates the dirty region.
* _ClearLines() always clears lines, even if they were empty. This way
the "softBreak" flag is cleared too.
* Be a bit more careful when multiplying a potentially negative signed
number by an unsigned one. Shouldn't have caused a problem in this
case, though.
Either of the first three items should fix#2379.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25958 a95241bf-73f2-0310-859d-f6bbb57e9c96
lines * (width + 8) bytes which is only a little more than a sixth of
what it was before. The effect on performance is relatively small. In
my tests I measured about 2% slowdown.
* Fixed artifacts after soft-wrapped lines.
* Re-enabled cursor blinking. I changed it so that the cursor is 1s
shown and 0.5s hidden (instead of 1s each). Tell me what you think.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25957 a95241bf-73f2-0310-859d-f6bbb57e9c96
an alpha channel of itself, we have to respect B_TRANSPARENT_MAGIC_* pixels
and properly make them transparent. We achive that now by just setting the
alpha to 0 in our converted B_RGBA32 bitmap for each pixel where there is a
B_TRANSPARENT_MAGIC_* pixel in the source. This is not really efficient, but
fixes missing images for example in NetPositive. They were treated as B_RGBA32
while they in fact were B_RGB32 and happened to have all alpha bits set to 0.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25956 a95241bf-73f2-0310-859d-f6bbb57e9c96
the front buffer, draw the bitmap, restore the copy to front buffer state and
unlock. This fixes that the updated button state was not actually copyied to
the front buffer (and therefore visible) when a window was inside an update
(disabling front buffer copying).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25954 a95241bf-73f2-0310-859d-f6bbb57e9c96
need to be drawn each time an update occurs (switching focus/non-focus or
pressed state, involving many graphics card blits and state updates in the
drawing subsystem).
* Provide a shared list of already present bitmaps. All the default decorators
now use the new _GetBitmapForButton static method to get a rendered bitmap
of the button for the given size and state (focus, pressed). If a matching
bitmap exists it is returned, otherwise a new one is created on demand using
a shared BitmapDrawingEngine.
* Cache the colors of the tab and frame for both focus and non-focus states to
avoid always looking them up.
* Added a todo that these bitmaps and the BitmapDrawingEngine are never freed.
They should be freed on app_server quit, but as there are only like 12 of
them anyway I didn't really bother.
* Some cleanup.
This should reduce the waste of cycles for just drawing the default decorator
buttons quite a bit. Probably the whole tab should be pre-rendered though to
also safe the text rendering of the title.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25952 a95241bf-73f2-0310-859d-f6bbb57e9c96
server side UtilityBitmap of a certain size. It sets up the DrawingEngine, the
UtilityBitmap and the BitmapHWInterface necessary so that one can directly
do drawing to a bitmap using the normal DrawingEngine interface. It provides
an ExportToBitmap method that allocates an output UtilityBitmap of a specified
size and color space where the content is put into, so a single instance of a
BitmapDrawingEngine can be reused for various drawing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25951 a95241bf-73f2-0310-859d-f6bbb57e9c96
InvalidateLayout().
This fixes#1461, the bug appeared because DraggableContainerIcon uses a special trick, involving changing the resizing
mode, to get the total width of the menu items. (see tracker/ContainerWindow.cpp line 479)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25948 a95241bf-73f2-0310-859d-f6bbb57e9c96
We now keep track of a lower bound as to when the list should scale
itself back down. When increasing the list size, we double the current,
with the lower bound set to 1/4 of the current size, not allowing it to
go any smaller than the block size. These combined allow us to do very
cheap tests to see if an operation requires a resize at all, and minimize
how often the list actually needs to be resized, since the difference in upper
and lower bounds prevents bouncing back and forth between a size in the case
of adding/removing an item while close to a boundary. All in all this should
make BList noticably more scalable when doing large numbers of add/remove
operations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25946 a95241bf-73f2-0310-859d-f6bbb57e9c96
Replace bsd types for haiku ones
-ve-This line, and those below, will be ignored--
M l2cap/l2cap_command.cpp
M l2cap/l2cap.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25945 a95241bf-73f2-0310-859d-f6bbb57e9c96
- As more cleaning still needs to be done regarding this subject the ticket is not yet closed
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25944 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Tailor a bit the main module
- Fix definitions in the main header
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25943 a95241bf-73f2-0310-859d-f6bbb57e9c96
When changing to icon mode with a size other than 32 (ie: kScaleIconMode) PoseView calls Refresh() and all the poses are
removed and loaded again (PoseView.cpp line 1995). This called AddPoses but didn't check for ShowDiskIcon(). The Disks icon
was shown on startup though, since Tracker uses another code path when starting (caching?).
This fixes#1833.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25941 a95241bf-73f2-0310-859d-f6bbb57e9c96
- do not count usb headers as part of count returned by write(), else we might end up writing more than the passed amount :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25939 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The audio and video panes refered to the OS as "BeOS", now it's "Haiku".
Thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25936 a95241bf-73f2-0310-859d-f6bbb57e9c96
state of the painter without restoring it afterwards (HighColor and
DrawingMode).
This function is only used in decorators, but as such it could lead to
strange effects. When clicking and holding the close button on the R5
MidiPlayer for example, the background of the scope would suddenly become
the color of the close buttons middle line. As the drawing mode was also
overwritten this could probably have lead to text rendering issues when
zooming applications. As I didn't find a easy way to reproduce such a thing,
this is only theory though.
* Implement the missing IsExclusiveAccessLocked() method in the DrawingEngine
which is not used at the moment. If corresponding debug output is generated
though, it reveals possible locking issues with CopyRegion().
* Remove an empty line in the LineArrayData struct.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25934 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Cleaning up and refactoring the OpenSoundNode code to use a single coding
style and be less C-like in many places.
* Fixed quite a few memory leaks in OpenSoundNode.
* Removed large chunks of inactive code originating from the MultiAudioNode.
* Transfered some functionality into NodeInput and NodeOutput, could be more.
* No functional changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25932 a95241bf-73f2-0310-859d-f6bbb57e9c96
the delta.
For example, MoveBy(-0.5, 0.0) would do nothing in this case:
roundf(150.0 - 0.5) = 150.0, when rounding the delta it gives the
expected value: roundf(150.0 + roundf(-0.5)) = 149.
On the other hand, BView::ResizeBy was doing it right, and this
explains the bug in Cortex (#333). Cortex was doing
scrollBar->MoveBy(-0.5,0) then scrollBar->ResizeBy(0.5,0) and the
inconsistency lead to the visual bug. (see StatusView::MouseMoved())
This fixes#333. The bug was strange to reproduce since sometimes the
point received in MouseMoved would be "some_integer+0.5" values
sometimes just integral. This has still to be investigated though not
problematic here anymore. See cortex/RouteApp/StatusView.cpp line 222.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25930 a95241bf-73f2-0310-859d-f6bbb57e9c96
only the decoder structure is now initialized per instance, this should
be better (thread safe).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25925 a95241bf-73f2-0310-859d-f6bbb57e9c96
in Cortex). This happened only when needing a tabbed view. It will now return a view with the
most fitting size. This fixes#597
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25923 a95241bf-73f2-0310-859d-f6bbb57e9c96
BIOS owned flag and clear all possibly enabled SMIs. It seems to be common
practice to just ignore this error case, probably because there are enough
broken BIOSs out there that do not correctly hand over the controller.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25918 a95241bf-73f2-0310-859d-f6bbb57e9c96
BasicTerminalBuffer. It synchronizes this buffer with the actual
terminal buffer and uses it for drawing. This does significantly
decrease the time the terminal buffer is locked by the window thread,
and avoids the necessity to do invalidations in Draw() when the
terminal buffer changed in the meantime.
* When the view detects heavy scrolling of the terminal buffer due to
lots of continued output, it throttles redraws to one every 0.1s. The
detection condition might need some fine-tuning -- it's probably a bit
too strict for most situations.
I guess I'm done now with optimizations. After testing on real iron for
the first time, I'm a little impressed. In the "time seq ..." speed
competition Haiku's Terminal easily beats Konsole by 10 to 20% for 80x25
and by factor 3+ for full screen. And if I interpret the results
correctly 90% of the time is actually used by "seq" itself which seems
to be about 5 times slower than under Linux.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25917 a95241bf-73f2-0310-859d-f6bbb57e9c96
we now double/halve the current size of the list, starting with the constructor blocksize as a baseline.
This has the net effect that when doing large numbers of inserts/removes, the number of resize operations
needed scales logarithmically to the number of operations, which should yield a decent performance
improvement in such cases.
Review welcome. This does not yet affect ticket #2363 that I'm aware of, as I'm currently in the process
of attempting to find a copy of said app to test with.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25916 a95241bf-73f2-0310-859d-f6bbb57e9c96
handover indeed worked. Doesn't really matter though, as we reset anyway,
just not twice in the success case.
* Disable all interrupts and clear any pending active interrupts just after
taking over the controller. This might fix bug #2361.
* Also trace output when the ownership change is successful.
* Don't disable interrupts during reset.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25915 a95241bf-73f2-0310-859d-f6bbb57e9c96
Temporarily removed the VESA driver, as long as it only builds on x86.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25913 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added a ResizeTo() version that allows to set the history capacity at
the same time.
* Added a SynchronizeWith() method that allows synchronizing with (a
part of) another buffer.
* Fixed TODO in _Scroll().
* Improved the dirty region update code in _Scroll(). It would in
certain (not exactly uncommon) situations needlessly invalidate the
whole screen.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25912 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Introduced a small (64 byte) buffer for the parser thread. Instead of
directly reading single characters out of the reader buffer, we read
a full parser buffer and process the characters from the parser
buffer. Thus _NextParseChar() could be inlined, since it merely
consists of a conditional method call and an access to the parser
buffer, now.
* Improved the locking of the terminal buffer. Instead of unlocking and
relocking after every multi-byte char or escape sequence, we only
unlock while refilling the parser buffer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25911 a95241bf-73f2-0310-859d-f6bbb57e9c96
- spice up select_oss_rate() to use the passed rate as hint, and also check in the rate array, or the range for cards with the FREERATE cap.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25906 a95241bf-73f2-0310-859d-f6bbb57e9c96
leave a unusable gap on the right (or down) of the thumb.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25897 a95241bf-73f2-0310-859d-f6bbb57e9c96
always Bounds() now.
This fixes#361, again we're better than R5! Although in this test case, the scrollbars shouldn't be activated in the first place. In icon mode the poseview is still putting too much white space on
the left (x<0) and make the scrollbars show. Fix is almost ready :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25896 a95241bf-73f2-0310-859d-f6bbb57e9c96
This is a temporary workaround to get the thing building until someone has enough cafein available to update binutils.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25895 a95241bf-73f2-0310-859d-f6bbb57e9c96
(can't tell if it was the same for audio, as mine -hda- is not supported
yet).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25894 a95241bf-73f2-0310-859d-f6bbb57e9c96
pretty much all the meaty code. Left in TerminalBuffer is only stuff
that didn't quite fit, like the encoding and view notifications.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25893 a95241bf-73f2-0310-859d-f6bbb57e9c96
there, but that's the easiest solution for the time being.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25887 a95241bf-73f2-0310-859d-f6bbb57e9c96
parser was acquiring a semaphore for each character. Now it only
acquires a semaphore when the buffer is empty. This speeds up output
bound programs. In my setup "seq" is now 3 times faster. Which is still
rather slow.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25886 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Register the protocol
- Remove some AF_INET stuff
Although step by step will become the L2CAP protocol implementation, for the moment is just a testing and learning code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25884 a95241bf-73f2-0310-859d-f6bbb57e9c96
are disabled, lots of commented debug code is still in there,
and quite a bit of cleanup is needed, but basically things work
at least as well as before with several improvements:
* Changed TerminalBuffer from an interface to a complete
implementation. Removed all related code from TermView. Removed
the now obsolete TermBuffer. TermParse uses TerminalBuffer instead
of TermView, and TerminalBuffer asynchronously notifies TermView.
This avoids potential deadlocks, fixing #1918. It also speeds
up tty-output-bound programs. E.g. a "seq 10000" is about twice
at fast with the default terminal size in my setup, now. It's
still horribly slow compared to e.g. Konsole, though.
* Replaced CurPos by a more compact and fully inline class TermPos.
* Removed the offset feature (that insets the used text area) from
TermView, thus simplifying the code. Instead put the view into a
new parent view which provides the insets. This also fixes
artifacts that could sometimes be observed in the insets area.
* Scrolling related changes:
- When scrolling fully down, the (80x25 or whatever) terminal
screen is seen. It is not possible to scroll below the screen as
in Be's Terminal. Scrolling in Haiku's Terminal was weirdly
broken in this respect. As a side effect this fixes#2070.
- When not scrolled fully down, further output won't cause any
scrolling. It is thus possible to read earlier output while
something is still going on. Fixes#1772.
- Particularly to avoid unnecessary scrolling in the not scrolled
fully down case, TermView no longer actually scrolls. It only
sets an internal offset and manually uses CopyBits() as needed.
Introduced a (hacky) BScrollView subclass using a BScrollBar
subclass to make that possible.
* Selection related changes:
- Double/triple click plus dragging allows for selecting multiple
words/lines.
- Word selection no longer selects ranges of non-space characters.
Instead it knows that words are made of alpha numerical chars and
a certain set of other chars, and selects a range of commonly
classified characters (word chars, non-word non-whitespace chars,
whitespace chars). The non-alpha-num word characters should be
made user-settable. Due to missing multi-byte character
classification multi-byte whitespace is not recognized.
- Beyond the end of the line there no longer are invisible spaces.
Trying to select the region selects the end of the line (i.e.
line break). This is similar to how Konsole and xterm work.
- Added auto-scrolling when selecting with the mouse. Formerly the
Terminal scrolled only while moving the mouse. The scroll speed
might need some fine-tuning.
- Don't know what change exactly did that (likely the switch to
non-end-inclusive text ranges used internally), but the
occasional selection artifacts are gone.
* Resizing the terminal window re-wraps soft-wrapped lines.
* The find functionality seemed to be completely broken. At least it
never found anything for me. Should work now, though multi-byte
characters are not matched correctly in case-insensitive mode.
Regressions:
* Printing is disabled.
* Cursor blinking is disabled. Do we want it anyway?
* In several cases full-width characters are not handled correctly
(in more cases than before).
* Shrinking the terminal width doesn't work very well with "less"
(and probably other full-screen terminal apps), due to line
re-wrapping. "less" expects them to be truncated only. When
supporting an alternate screen buffer re-wrapping should be
disabled for it, which should solve the problem.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25881 a95241bf-73f2-0310-859d-f6bbb57e9c96
session to also include each view's individual update rect (in screen coords).
Should actually not be mush slower than the old version, and hopefully makes
it possible to have smarter BView::Draw() implementations which should make
more than up for any potential speed loss.
* Removed unused version of View::AddTokensForViewsInRegion().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25879 a95241bf-73f2-0310-859d-f6bbb57e9c96
controller. The device doesn't use the PCI_ide subclass (but
PCI_mass_storage_other) and requires not using compatibility mode. Otherwise
it's pretty much the generic_ide_pci driver.
* Directly adding the driver to the image.
This driver could either be merged into the generic ide driver so it supports
not quite standard devices, or this could be made into a driver that collects
all those non standard devices. Either way, this works for now and lets my
machine boot off the IDE drive :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25868 a95241bf-73f2-0310-859d-f6bbb57e9c96
the parent bus. It is possible that there are other busses below the root
bus and we must therefore always iterate through the child devices when
searching for a device with a bus unequal to our own. Otherwise devices for
non-null busses could not be found which would lead to crashes in operations
involving them.
* Adding a panic in case finding a device failed as this should clearly not
happen.
This probably fixes bug #2293 and might affect #2284 too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25867 a95241bf-73f2-0310-859d-f6bbb57e9c96
still open transfer has enough time to cleanly exit with error. Fixes a crash
when removing a device while a control transfer on the device endpoint was
open and would have timed out otherwise.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25863 a95241bf-73f2-0310-859d-f6bbb57e9c96
the same name but different path. In case of usb_disk that is now loaded as
a boot module the driver got registered with a different path, which prevented
later rescans from working. USB mass storage should now work again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25862 a95241bf-73f2-0310-859d-f6bbb57e9c96
prevents deadlocks in cases where a new transfer is scheduled from within the
cancel callback. This is an edge case, as generally you don't want to schedule
anything when explicitly canceling transfers, but there are a valid use cases
when you cancel because of a timeout and then have to reset the device for
example. Note that this hides bug #2353, where the cancel case is probably
not handled correctly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25861 a95241bf-73f2-0310-859d-f6bbb57e9c96
what the ports of a team are up to without having to go through each port
individually.
* Enlarge the port id column so even large ids fit nicely.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25857 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Fix using fScreenAndUserClipping directly in CopyBits() that could crash
when in fScreenAndUserClipping wasn't used (when there's no user clipping
for example).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25856 a95241bf-73f2-0310-859d-f6bbb57e9c96
get drawn into a window with random colors. With that one can for example add
code to the app_server or interface kit classes that push through rects or
regions to see what exactly is going on in drawing operations. Code examples
of how to use are at the top of the file. Has fixed window dimensions though
as I was lazy :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25855 a95241bf-73f2-0310-859d-f6bbb57e9c96
clipping region pointer.
* Provide _ScreenClipping() that only includes local and screen clipping but
not user clipping.
* Provide ScreenAndUserClipping() that returns screen clipping if no user
clipping is present, or returns a combined region that is then cached.
* Adapt all places where the former methods are used and decide which one to
use depending on the relevance of user clipping.
User clipping is now ignored for background clearing and when determining
whether or not to call Draw() on a view. This should make Haiku behaviourally
compatible with BeOS (confirmed by the ClippingAndRedraw test app) and should
also fix the Firefox redraw issues. Stephan please review!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25854 a95241bf-73f2-0310-859d-f6bbb57e9c96
(or at least incompatibly) uses the user set clipping region when determining
whether or not to call Draw() on a view. Under BeOS when a some part of a view
is exposed it will always trigger a Draw(), even if the current clipping region
disallows drawing in the supplied update rect. Under Haiku however the view is
not considered for an update when the current clipping region does not
intersect with the newly exposed area.
Running this test app from the Terminal this behaviour can be seen. When
clicking inside the window a floating window pops up. When clicking again it
goes away and triggers a redraw. When hitting a key, a clipping region is set
that does not overlap with the floating window. After this clipping is set,
the view does not get any Draw() call anymore when the floating window goes
away.
This is the reason for the redraw issues in firefox, as firefox uses the
clipping region to constrain its asynchronous drawing, but does never reset
the clipping to NULL. As firefox just collects the update rects in Draw() and
then draws the contents itself, once the clipping region is set, many of the
Draw() calls don't get called and the interface parts are never redrawn.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25853 a95241bf-73f2-0310-859d-f6bbb57e9c96
play any more clips." Of course I was searching in my own commits. In the
end, I resorted to binary searching revisions for when this broke. Turns out
it is your change r25793/r25794, in which you forgot to attach the colorspace
to the app_server message. Which of course makes it lock up. Another of those
instances where you think passing data structures between client and app_server
instead of this "protocol" would be the better idea...
* Fixed bitmaps_support_space() retrieving the currently supported overlay
flags for a given color space. This makes MediaPlayer play files again, the
media node connection would time out because of the broken app_server
communication. (I have not tested this change yet, but I will in a minute, on
a different computer.)
* Also retrieve the overlay supported flag for YCbCr colorspaces.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25847 a95241bf-73f2-0310-859d-f6bbb57e9c96
volume labels at all.
* Use the common function in both identifying and mounting the volume so the
name is in sync between what the disk device manager got through scanning and
what Tracker gets through reading the fs stat.
* Strip trailing spaces from volume names in all places.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25828 a95241bf-73f2-0310-859d-f6bbb57e9c96
itself to (0,0), and broke further item width computation. We now use the parent view width (BarView) instead. This fixes#471
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25826 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Slightly more debug output for failed atempts to create a decoder.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25825 a95241bf-73f2-0310-859d-f6bbb57e9c96
* On BeOS "bitmaps_support_space()" returns false for YCbCr color spaces. :-(
* Refactor the code which sets up the decoded format in the MediaTrack-
VideoSupplier to always start with a clean format for multiple calls to
BMediaTrack::DecodedFormat().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25824 a95241bf-73f2-0310-859d-f6bbb57e9c96
we properly handle this case (cancel everything and reset the controller) to
avoid flooding the system with interrupts.
* Also only check for enabled interrupts to not steal potentially shared
interrupts.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25823 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Do not exit in case of success to retry with B_RGB32, so the bytes per row
check is performed.
* Ignore if bytes per row is big enough.
* Check the success for the last attempt to set DecodedFormat().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25821 a95241bf-73f2-0310-859d-f6bbb57e9c96
end, this results in trying to decode the last frame again, which would
the decoder to seek unnecessarily.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25820 a95241bf-73f2-0310-859d-f6bbb57e9c96
and remove the then unneeded mutex_init() for them.
* Remove the workaround for allowing uninitialized mutexes on kernel startup.
As they are all initialized statically through the MUTEX_INITIALIZER() now
this is not needed anymore.
* An uninitialized mutex will now cause a panic when used to find possibly
remaining cases.
* Remove now unnecessary driver_settings_init_post_sem() function.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25812 a95241bf-73f2-0310-859d-f6bbb57e9c96
got a debugger_getchar hook, it just wasn't used yet. Not that there would be
any debugger add-on implementing that hook currently...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25809 a95241bf-73f2-0310-859d-f6bbb57e9c96
mutex deadlocks more obvious.
* Fix wrong function name in panic string.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25808 a95241bf-73f2-0310-859d-f6bbb57e9c96
when hot-plugging a USB mass storage device. The legacy driver (usb_disk in
this case) was rescanned which locked the legacy driver mutex. The insertion
of the new device node caused the disk device manager (notified through node
monitoring) to try to scan the new node. As opening the node triggers
LegacyDevice::InitDevice() that locks the legacy driver mutex again a deadlock
occured.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25807 a95241bf-73f2-0310-859d-f6bbb57e9c96
syslog so syslogs always contain the revision number too (as does serial
output).
This is only necessary because the early part of the serial output (that
contains the revision number) does not make it into the syslog. So fixing that
might be the better way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25804 a95241bf-73f2-0310-859d-f6bbb57e9c96
keymap there too.
* Add a config header where one can select what KDL keymap should be used
(currently only 'us' and 'sg' are available though).
* Provide a third keymap that is used when the alt modifier is used (the swiss
german keymap is pretty useless without alt as all the useful keys like
backslash and curly braces use alt).
Our KDL is so powerful and nice to use, the only thing that bothered me was
that I always had to think about where some of the special keys are located in
the US keymap. So this simple compile-time keymap switching provided to be
helpful for me and might be for others too. Keymaps for other layouts obviously
have to be written before this becomes really useful.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25803 a95241bf-73f2-0310-859d-f6bbb57e9c96
children, you either have dynamic or fixed children, never both.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25801 a95241bf-73f2-0310-859d-f6bbb57e9c96
* a driver can register children and have a fixed child (ie for a bus manager).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25799 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The vesa driver/accelerant supports mode switching now. No special handling
is needed anymore.
* Always write the vesa settings file to directly start with the right
resolution regardless of the used graphics driver. Should save an additional
mode switch while booting.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25795 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added B_BITMAPS_SUPPORT_OVERLAY flag to indicate overlay support for the
color space.
* Rewrote GraphicsDefs.h - the previous one was obvious a copy of the Be header,
including typos and strange white space. I was a bit lazy with respect to
the color space details, and mostly trusted the information provided by the
Be header else.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25793 a95241bf-73f2-0310-859d-f6bbb57e9c96
zero, otherwise we leak these plugins, since the ref counting is based
on the plugin still being in the list.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25792 a95241bf-73f2-0310-859d-f6bbb57e9c96
class TerminalBuffer, which will evolve into a TermBuffer replacement
and decouple the parse thread from the window.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25787 a95241bf-73f2-0310-859d-f6bbb57e9c96
be put into a boot_item in frame_buffer_console_init().
* The VESA driver now supports gettings the EDID information as well; this
is necessary now, since the app_server no longer takes over the mode the
boot loader had chosen.
* Note, we might want to do this via vm86 instead in the future, and remove
the kernel part again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25786 a95241bf-73f2-0310-859d-f6bbb57e9c96
it can also no longer create a default mode.
* This SetBestMode() function now follows a similar logic than the boot loader,
that is, only the width must not deviate, all other values are chosen as
close to the original as possible.
* VirtualScreen::AddScreen() now follows the same logic as the boot loader in
case no configuration was found, and the current screen has no preferred mode
(for example via EDID). That is, it will first try 1024x768, and then 800x600.
* This means there is no mode change anymore when switching from the boot
loader to the app_server in Qemu and VMware.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25782 a95241bf-73f2-0310-859d-f6bbb57e9c96
added to their parent. Currently, only the existence of B_FIND_MULTIPLE_CHILDREN
influences the priority.
* This makes it possible to register/probe intelligent busses earlier than
simple/generic busses.
* Reenabled the ISA bus manager using the new device architecture; the
ide_isa driver can and will now actually work.
* device_node::Probe() now sets the global sGenericContextPath for generic
nodes. This causes a special handling in _GetNextDriverPath().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25779 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Therefore, device_manager::rescan_node() now actually causes the
driver::rescan_child_devices() function to be called, instead of probing
again.
* Added a device_node::Reprobe() method that does what Rescan() did previously.
* Probe() should now also work with "dumb" busses that don't support type
information - it will now probe all of these nodes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25778 a95241bf-73f2-0310-859d-f6bbb57e9c96
device is still referenced through the devfs and used right between deleting
and unpublishing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25775 a95241bf-73f2-0310-859d-f6bbb57e9c96
file for hpet implementation. Not yet added to the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25773 a95241bf-73f2-0310-859d-f6bbb57e9c96
from Scooby nearly the same as on R5 (still misses the gray header color)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25769 a95241bf-73f2-0310-859d-f6bbb57e9c96
In the end, the problem was that no codec was installed
for it, but I fixed a bunch of issues on the way to find
out. Now the controller will not rely on the number
of audio and video tracks, but on the fact that it could
instantiate suppliers at all. Made the MediaTrackVideoSupplier
return an init error. Should be replicated for the
MediaTrackAudioSupplier.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25765 a95241bf-73f2-0310-859d-f6bbb57e9c96
bitmaps_support_space() interface kit function. First try to
use overlays, if that fails, try again without overlays. The
NodeManager makes sure to fall back to B_RGB32 if the given
mode is not supported for drawing bitmaps in by BViews. Thanks,
Axel, for the suggestion!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25764 a95241bf-73f2-0310-859d-f6bbb57e9c96
bitmap support (bitmaps support child views or BViews can
draw them)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25762 a95241bf-73f2-0310-859d-f6bbb57e9c96
the needed derived member fSettings was already destroyed by the derived ScreenSaverWindow destructor. See backtrace in #2287Fixes#2287
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25761 a95241bf-73f2-0310-859d-f6bbb57e9c96
* FragmentPacket::Reassemble() would return NULL instead of an error when the
packet was not yet complete.
* This didn't have any actual consequences, though, as Reassemble() was only
called for a complete fragment set.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25758 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Minor cleanup of ide_isa, and generic_ide_pci (removed wrapper.h).
* Added ide_isa back to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25755 a95241bf-73f2-0310-859d-f6bbb57e9c96
already a dead thread available. Fixes a race condition.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25754 a95241bf-73f2-0310-859d-f6bbb57e9c96
B_DEBUG_SPINLOCK_CONTENTION is defined to 1. It typedefs spinlock to a
structure (thus breaking BeOS binary compatibility), containing a
counter which is incremented whenever a thread has to wait for the
spinlock.
* Added macros for spinlock initialization and access and changed
code using spinlocks accordingly. This breaks compilation for BeOS --
the macros should be defined in the respective compatibility wrappers.
* Added generic syscall to get the spinlock counters for the thread and
the team spinlocks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25752 a95241bf-73f2-0310-859d-f6bbb57e9c96
In these cases, the last partial page would have never been written back.
* This fixes bug #2282, and eventually others.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25747 a95241bf-73f2-0310-859d-f6bbb57e9c96
pipes in the shell, though the semantics is a little different: The
second command is invoked whenever the first command has written a
complete line. The line is passed as last argument to the second
command. The new command flag B_KDEBUG_PIPE_FINAL_RERUN causes the
second command to be invoked again (with NULL argument) after the
first command is done.
* Added kprintf_unfiltered() and kputs_unfiltered() which bypass the
pipe mechanism and directly print to the bluescreen/serial output.
* Moved most commands from debug.cpp to the new
debug_builtin_commands.cpp.
* B_KDEBUG_DONT_PARSE_ARGUMENTS commands don't get an argument anymore,
if it would consist of white space only.
* Added new debugger command return value B_KDEBUG_ERROR, which
indicates that executing the command failed. This return code will
abort a complete pipe.
* Since debugger commands can nest (i.e. one command can invoke another
one) the setjmp()/longjmp() mechanism to restore the stack after a
page fault in a command needs more than one jump buffer.
* Added abort_debugger_command(), which longjmp()s out of the currently
executed command. This will also abort the current pipe.
* When pagination is enabled pressing "a" will abort the running command
(as opposed to "q" which only disables the blue screen output, but
lets the command continue).
* Added debugger commands:
- "grep" which can be used to filter output by pattern. Removed the
"filter" command and the underlying mechanism that did that before.
- "head" which prints only the first lines of output of another
command.
- "wc" counts lines, words, and characters of another command's
output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25744 a95241bf-73f2-0310-859d-f6bbb57e9c96
host. This prevents the BeOS and Unix specific zipup.h from clashing and allows
hybrid GCC2/GCC4 images to be built under BeOS.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25741 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added legacy_sata and scsi_cd back to the image.
* Minor cleanup in scsi_disk.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25739 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Renamed scsi_dsk to scsi_disk.
* Joined all scsi_disk sources together to a single scsi_disk.cpp file.
* Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25737 a95241bf-73f2-0310-859d-f6bbb57e9c96
regression that audio playback of multiple files was not "seamless" anymore.
Even video playback should be seamless, the remaining small glitch could be
a problem with buffer timeout if the switch takes too long.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25735 a95241bf-73f2-0310-859d-f6bbb57e9c96
the producer media nodes would access the suppliers in their own thread
without having any locks held, while the window could replace the suppliers.
I think since I delayed the deletion of the suppliers in the controllers, this
problem was only theoretical... but this is just more clean.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25734 a95241bf-73f2-0310-859d-f6bbb57e9c96
a way that the transport group did not need to re-layout, then the seek
slider would not be at the correct position.
* Layout the transport controls with a fixed maximum width in order to prevent
spreading them too much.
* Fix "About" and "MediaPlayer" missing a space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25733 a95241bf-73f2-0310-859d-f6bbb57e9c96
displayed, does not seem to be the reason for the problem I am observing
with one clip I have, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25732 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Leave the codec a chance to advertise the best output color space,
try B_YCbCr422 as the most widely supported format in case the codec
does not advertise.
* Support two more overlay colorspace modes in the video consumer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25731 a95241bf-73f2-0310-859d-f6bbb57e9c96
two notifications (install + update), but only the install
notification.
* When create_app_meta_mime() installs a new MIME type (app signature or
supported type), it only sends the install notification, instead of
install + one or more updates.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25730 a95241bf-73f2-0310-859d-f6bbb57e9c96
as it seems devfs should not take over ownership. The device is deleted
in republish_driver for legacy drivers before the call to devfs_unpublish_device
that in turn deletes the vnode. This looks generally suspicious to me as
the device pointer the devfs vnode may still use gets invalid for a certain
amount of time (until the node is unpublished). So maybe the devfs should
take ownership of the device afterall and it shouldn't be deleted by the
device_manager/legacy driver functions. Axel please review.
* Do not try to delete the IOScheduler for now as creating one is disabled
currently too.
This fixes the crash on rescans of legacy drivers as seen when unplugging
USB devices.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25729 a95241bf-73f2-0310-859d-f6bbb57e9c96
"interface"
* Complete reimplementation of the playback engine using Media Nodes:
- Seeking video files does not appear to lockup the playback anymore, but
works on a frame accurate level even for keyframe based streams. There is
currently a problem with certain container formats, the audio track reports
a "Device Seek Error" in certain conditions. In that case audio goes silent,
and can be restarted by going back to the beginnings of the stream.
- Video overlays are now supported.
- It would be possible to connect the output of the MediaPlayer to other
applications or dormant media nodes.
* Known regressions:
- The volume slider has currently no effect anymore.
- Switching the audio track during playback has a known race condition and
can crash the player.
- The new engine is not as "light weight" as the old one. I tagged the
previous implementation in tags/components/mediaplayer-engine-v1. It does
not seem to have any noticable effect though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25725 a95241bf-73f2-0310-859d-f6bbb57e9c96
part of headers/private/shared, Icon-O-Matic used older versions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25720 a95241bf-73f2-0310-859d-f6bbb57e9c96
to give other windows the opportunity to mark the icon invalid before
recaching it.
* Since we currently update all app MIME types on first boot, over 400 messages
are generated, so that delay easily caused the message queue to get full.
* I've now reduced the wait to 10 ms, and also call BWindow::UpdateIfNeeded()
afterwards, which empties the message port, too. This fixes bug #2212.
* Note though, this should be handled completely different to make it really
work right.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25719 a95241bf-73f2-0310-859d-f6bbb57e9c96
Instead we only allow temporary caches to be merged. This remedies the
problem that after fork() + join() there remains a superfluous cache
layer for all RAM areas.
I haven't tested it, but this might improve the jam situation
memory-wise (huge heap is committed one less time), though it might
worsen it performance-wise (lots of heap pages are moved with every
merge).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25717 a95241bf-73f2-0310-859d-f6bbb57e9c96
new function merge_cache_with_only_consumer(), which is also used in
vm_cache_remove_area(), now.
* Added tracing for the merge case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25716 a95241bf-73f2-0310-859d-f6bbb57e9c96
help with bugs, sending patches and the ongoing Haiku-Ports effort.
As always, if you think someone should be listed, please drop me a line!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25711 a95241bf-73f2-0310-859d-f6bbb57e9c96
* This is not perfect, but it makes Tracker catch up and redraw when the next
event is due. This improves the situation in bug #2212.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25708 a95241bf-73f2-0310-859d-f6bbb57e9c96
concurent SendRequest() calls. Therefore it's probably a good idea to
protect that, now that the request data is not dynamically allocated anymore.
* Fix warning about not returning a result in the compatibility version of
init_mutex_etc() (which wouldn't make a difference as the Haiku version
does not return anything).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25707 a95241bf-73f2-0310-859d-f6bbb57e9c96
or busses/ide.
* This change makes the AHCI driver working again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25705 a95241bf-73f2-0310-859d-f6bbb57e9c96
remains. This replaces the previous mechanism of switching the thread to
a dedicated death stack. We might consider moving more cleanup work to
the undertaker, but that seems a little more involved.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25704 a95241bf-73f2-0310-859d-f6bbb57e9c96
member in AHCIController, since, at least in theory, every PCI device could
come with its own module.
* Fixed exported module names to indicate compliance with the new device
manager.
* Apparently, GCC4 doesn't like mixing C++/C linkage even for variables anymore,
though it really shouldn't care about that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25699 a95241bf-73f2-0310-859d-f6bbb57e9c96
than a semaphore, and can already be used in the early boot process.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25689 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Adjusted code using recursive locks respectively. The initialization
cannot fail anymore, and it is possible to use recursive locks in the
early boot process (even uninitialized, if in BSS), which simplifies
things a little.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25687 a95241bf-73f2-0310-859d-f6bbb57e9c96
- server
- command tools
- H2 transport driver
Patch by Adrien Destugues and Andreas Faerber
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25685 a95241bf-73f2-0310-859d-f6bbb57e9c96