Commit Graph

33689 Commits

Author SHA1 Message Date
Ingo Weinhold dc6a6a9b42 Reenabled interrupts before notifying the page writer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35399 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 21:11:31 +00:00
Ingo Weinhold 4e4cfe8f0a Missing page access debug markers. Fixes #5359.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 21:07:23 +00:00
Ingo Weinhold ffe8b20cda Clear HAIKU_SHARED_LIBSTDC++ and HAIKU_SHARED_LIBSUPC++ when the compiler
doesn't know them. Not sure why that was commented out -- only this way the
build system knows that the libs aren't available. Fixes the non-Haiku build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35397 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 20:37:23 +00:00
Ingo Weinhold 25daf1cf1e * Build libsupc++.so and libstdc++.so only when they aren't provided by the
compiler. Fixes #5322 (the ones in /boot/develop would be overwritten).
* Simplified the Jamfile building these libraries.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 20:19:53 +00:00
Ingo Weinhold d8141a0e2a Removed the commented out scanning of the inactive queue when no paging is
going on. I only wanted to have it in the repository in case we decide at a
later point that it is a good idea after all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35395 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 19:05:30 +00:00
Ingo Weinhold 9908d834be Forgot to add this one in the previous commit: The PageCacheLocker does have
its own source file now that the page daemon source file is gone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35394 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 18:55:52 +00:00
Ingo Weinhold 40bb94819e * Removed useless return parameter from vm_remove_all_page_mappings().
* Added vm_clear_page_mapping_accessed_flags() and
  vm_remove_all_page_mappings_if_unaccessed(), which combine the functionality
  of vm_test_map_activation(), vm_clear_map_flags(), and
  vm_remove_all_page_mappings(), thus saving lots of calls to translation map
  methods. The backend is the new method
  VMTranslationMap::ClearAccessedAndModified().
* Started to make use of the cached page queue and changed the meaning of the
  other non-free queues slightly:
  - Active queue: Contains mapped pages that have been used recently.
  - Inactive queue: Contains mapped pages that have not been used recently. Also
    contains unmapped temporary pages.
  - Modified queue: Contains unmapped modified pages.
  - Cached queue: Contains unmapped unmodified pages (LRU sorted).
  Unless we're actually low on memory and actively do paging, modified and
  cached queues only contain non-temporary pages. Cached pages are considered
  quasi free. They still belong to a cache, but since they are unmodified and
  unmapped, they can be freed immediately. And this is what
  vm_page_[try_]reserve_pages() do now when there are no more actually free
  pages at hand. Essentially this means that pages storing cached file data,
  unless mmap()ped, no longer are considered used and don't contribute to page
  pressure. Paging will not happen as long there are enough free + cached pages
  available.
* Reimplemented the page daemon. It no longer scans all pages, but instead works
  the page queues. As long as the free pages situation is harmless, it only
  iterates through the active queue and deactivates pages that have not been
  used recently. When paging occurs it additionally scans the inactive queue and
  frees pages that have not been used recently.
* Changed the page reservation/allocation interface:
  vm_page_[try_]reserve_pages(), vm_page_unreserve_pages(), and
  vm_page_allocate_page() now take a vm_page_reservation structure pointer.
  The reservation functions initialize the structure -- currently consisting
  only of a count member for the number of still reserved pages.
  vm_page_allocate_page() decrements the count and vm_page_unreserve_pages()
  unreserves the remaining pages (if any). Advantages are that reservation/
  unreservation mismatches cannot occur anymore, that vm_page_allocate_page()
  can verify that the caller has indeed a reserved page left, and that there's
  no unnecessary pressure on the free page pool anymore. The only disadvantage
  is that the vm_page_reservation object needs to be passed around a bit.
* Reworked the page reservation implementation:
  - Got rid of sSystemReservedPages and sPageDeficit. Instead
    sUnreservedFreePages now actually contains the number of free pages that
    have not yet been reserved (it cannot become negative anymore) and the new
    sUnsatisfiedPageReservations contains the number of pages that are still
    needed for reservation.
  - Threads waiting for reservations do now add themselves to a waiter queue,
    which is ordered by descending priority (VM priority and thread priority).
    High priority waiters are served first when pages become available.
  Fixes #5328.
* cache_prefetch_vnode(): Would reserve one less page than allocated later, if
  the size wasn't page aligned.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 18:53:52 +00:00
Ingo Weinhold 2735cad982 Added missing include.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35392 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 18:47:07 +00:00
Ingo Weinhold cf99b9ab60 Added VMCache::CacheRef() accessor.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35391 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 18:46:29 +00:00
Axel Dörfler 22991e1d53 * Use the is_writing flag to determine whether or not we may write back a block
that does not have a transaction.
* This should fix #5340.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-03 13:16:22 +00:00
Michael Lotz 029f4e9317 * Add an inline CurrentPoseList() that returns either the filtered or normal
pose list and replaced the rather ugly "fFiltering ? ..." everywhere with it.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-02 17:56:52 +00:00
Michael Lotz cc5b851813 No need to lock out the normal typeahead when filtering doesn't apply (i.e. in
icon mode). And a little automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35388 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-02 17:37:53 +00:00
Michael Lotz e33d4e74c2 Update the test to cover a wider width range now that truncating doesn't crash
anymore. Also make that test string a bit more complicated.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35386 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 22:03:11 +00:00
Jérôme Duval 7f2f5e05b0 update from Jerome Leveque, with style changes by me (I hope you don't mind).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 21:27:42 +00:00
Adrien Destugues c055de4e49 Incomplete handling of moving items around in a list. Child items get lost when you move their parent, but I feel the code is getting too messy and I'm not sure what's the best way to fix that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35384 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 21:18:11 +00:00
Adrien Destugues 8c325f8097 Fix some more bugs in the locale preflet lists. Dragging from one list to the other should now always work, while drawing inside a list is not finished, working on it now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 19:53:43 +00:00
Axel Dörfler 9fcbc27e27 * Removed the ChainRunnerGetHostByNameHack from libmail.so. Should it still
be needed in Haiku, one could easily fix that.
* Automatic whitespace cleanup.
* Minor other cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35382 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 19:11:19 +00:00
Michael Lotz 5bc9fb9d24 * Replace the truncate_string() helper function with a new, simplified version.
* Remove no longer necessary support functions.
* The new version uses a single BString as input/output parameter and only
  modifies that one by removing non-fitting chars and inserting the ellipsis
  where appropriate, so avoids copying around bytes/chars/strings in a few
  places. It uses the new Chars functions of BString so also no need for manual
  multibyte handling.
* Adjusted the BFont and ServerFont usage of truncate_string() which are both
  simplified by using the single BString. It avoids a lot of temprary
  allocations and string copying. The char * version of BFont
  GetTruncatedStrings() now uses the BString version and not the other way
  around anymore which requires us to allocate temporary BString objects, it's
  not worse than before though.
* This fixes a bunch of problems with the previous functions like always
  prepending the ellipsis for B_TRUNCATE_BEGINNING, crashing on short enough
  widths, violating the width in the B_TRUNCATE_END case when the width was
  short enough, non-optimal truncation in a few cases and sometimes truncation
  where none would've been needed. Also fixes #4128 which was a symptom of the
  broken B_TRUNCATE_BEGINNING.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 18:43:03 +00:00
Oliver Tappe ecbd2b3054 * added optional package for ABI-compliance-checker, which can be used to check the ABI
compatibility between two different versions of a shared library.
Even when using this tool, you still need to make up your mind about compatibility, but
IMHO it helps a lot.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 17:04:49 +00:00
Michael Lotz 8806dfd057 Adding test that shows that B_TRUNCATE_BEGINNING mode is essentially broken.
Worse yet for a small enough length it actually crashes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 13:39:06 +00:00
Adrien Destugues d66b223341 Move the parent along with child items in the language selection list.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35378 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 12:58:43 +00:00
Ingo Weinhold c2629ccc6a Patch by "Grey": Small optimization of arch_int_disable_interrupts_inline()
and arch_int_restore_interrupts_inline().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35377 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 08:55:44 +00:00
Michael Lotz 0086654c68 Automatic whitespace cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35376 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:36:59 +00:00
Michael Lotz b3e4ce5422 Use the multibyte aware string functions for typeahead search and filtering so
that special characters can be used as well (umlauts for example).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:30:08 +00:00
Michael Lotz 5cd9308ef4 Drop BeOS compatibility and remove related cruft, including using String.cpp
directly. Fixes the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:27:18 +00:00
Michael Lotz 7acdd03f5e Replaced the sMatchString buffer used for typeahead search by a BString. No
intended functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:02:05 +00:00
Michael Lotz 82471975d5 Adding a simple test app for the utf-8 aware BString functions. I didn't feel
like writing a full blown unittest though, sorry...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 04:26:05 +00:00
Michael Lotz a5b7cbe331 Adding utf-8 aware version of most functions to BString. They are named after
the corresponding normal functions but have a "Chars" in the name like
"MoveCharsInto" or "AppendChars". Also added CountBytes() and CharAt().
This should make everyday string handling with multibyte strings a bit easier.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 04:20:01 +00:00
Oliver Tappe 783930d916 * reverted the part of r35362 that introduced support for minor ABI versioning - my evil twin made
me do that!

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 23:41:44 +00:00
Rene Gollent ef9c0b6a51 More cleanups:
- remove some more leftover desktop integration-related code.
	- remove special case that would hide the Desktop folder in file panels.
	- fixed BFilePanel to correctly filter out the trash from the volume root
	  and show it on the desktop like everywhere else.
	- renamed CountView::Add/RemoveFilter so they don't hide
	  BHandler::Add/RemoveFilter (gcc4 warning).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 21:27:14 +00:00
Adrien Destugues 859d808fb7 Also forgot this.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 21:22:25 +00:00
Adrien Destugues e6a7a30e3b This should have been part of previous commit :
Add Language->IsCountry to tell if a language holds a country specifier (like fr_FR) or not (fr alone). This allows separating them in the preflet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 21:17:39 +00:00
Adrien Destugues fbc6963056 The locale preflet now use a BOutlineListView for listing languages and country variants.
This is still quite buggy, but at least you can start working on pt_br and test things out.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 21:00:29 +00:00
Oliver Tappe af50956825 * added ABI version info for libz.so, libpng.so and libjpeg.so (hopefully, I got it right, as it is
really hard to tell from the available info)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 20:55:16 +00:00
Oliver Tappe 418b8758bf * added support for minor ABI versions to the SharedLibrary rule, as otherwise updating libz.so
could prove to be a major PITA (because of all the dependencies that would need to be rebuilt)
* when adding a library to the image, its optional minor abi version is taken care of, too (i. e. a
corresponding link is created).
* the ABI-related links in /system/lib are now replicated in /boot/develop/lib/<arch>

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 20:53:29 +00:00
Adrien Destugues f3c8afe886 Fix a bug in OutlineListView::ItemUnderAt that made it pick totally wrong items when some things in the list were collapsed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 18:06:59 +00:00
Rene Gollent e917a2404d Fix some selection-related problems in BOutlineListView as well as
broken behavior in _RemoveItem that could potentially result in the wrong 
list items being removed/deleted depending on the expanded/collapsed state 
of higher items in the list.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 17:32:12 +00:00
Ingo Weinhold 23b7090f09 is_calling(): Skip non-kernel addresses. Fixes the often not working
"calling" command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 15:52:10 +00:00
Ingo Weinhold 9e4087372b SystemProfiler::EventOccurred(): We must not access the object after
releasing our reference to it. So return immediately after having done that.
Previously the _MaybeNotifyProfilerThread() that innocently lurked at the end
of the method would be invoked, playing with the dead beef.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35357 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 13:53:10 +00:00
Ingo Weinhold 8d9e64aeb2 Added missing builtext.h dependency declarations. The dependencies were
introduced with the update to bash 4. That could cause the bash build to fail
when built with multiple jobs. Thanks to Matt for investigating this!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 08:51:35 +00:00
Philippe Saint-Pierre 481a903a81 DeskBar: Adds a new setting (called ...Enabled) to determine if we show a particular Recent Menu.
* the previous behaviour was to consider it enabled if the count was above 0, and disabled otherwise.
 * the new behaviour is to consider it disabled if the count is 0, but also allows to disable it by unchecking the box in the pref window, without setting the count to 0 (losing its value).

Fixes ticket #5007.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 02:49:10 +00:00
Michael Lotz 83c03b5698 Missed the re-insertion when exiting early after checking the sort order for a
pose on a non-visible pose list which would cause poses to get lost from the
unfiltered list.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35354 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 02:28:29 +00:00
Philippe Saint-Pierre 005e1e3073 ActivityMonitor: Add a 7px margin (when necessary) to the legend to avoid having the dragger overlaps the labels.
Fixing ticket #3319.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35353 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 01:03:43 +00:00
Michael Lotz eeeef45c69 * Implemented a "refs catcher" that will catch refs received through a
B_REFS_RECEIVED within a short amount of time (0.5 seconds right now) and
  send them to the last window to be appended to the playlist. This allows to
  select multiple media files in Tracker and get them inside a playlist of a
  single window instead of spawning many individual ones (like when filtering
  for an album, selecting all tracks and opening them by hitting enter).
* Introduce special append index values APPEND_INDEX_REPLACE_PLAYLIST (-1, does
  the same as before) and APPEND_INDEX_APPEND_LAST. The latter is used when
  appending through a RefsReceived() call and ensures that the index is
  evaluated at the actual insertion time (in ImportPLItemsCommand::Perform())
  as by the time this function is called the playlist count may have changed
  already due to multiple RefsReceived() invokations, which would then mess up
  the order. This makes the above item work as expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 01:03:06 +00:00
Michael Lotz 497aa62c2f * Provide a LaunchLooper that receives launch messages and executes the launch
functions provided with the given arguments.
* Make use of that looper to replace spawning a thread for each launch task.

On the one side this reduces the amount of used threads (and should fix #698)
and on the other side it makes the order in which refs are sent a bit more
predictable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 00:25:10 +00:00
Philippe Saint-Pierre d6a142a912 Expander: don't use fLineHeight before its value is calculated. And don't resize the window to a size smaller than the calculated minHeight.
* This fixes a bug where checking "show contents" before a source archive is chosen makes the window go tiny.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 20:33:48 +00:00
Colin Günther 3c08c615dc * Broken build detected by mmadia: When compiling with jam -j8 the atheroswifi
driver may not build due to dependencies to the kernel_c++_structs.h header.
  Normally this header is build by jam when building the libfreebsd_network.a
  library, with the first network driver so to speak.
  Adding a rule to the atheroswifi Jamfile to build kernel_c++_structs.h
  would be the wrong fix, because the atheroswifi doesn't need condition
  variables.
  The correct fix is to remove the #include <condvar.h> statement from proc.h.
  And while I'm at it, I remove all the other include statements, too, as none
  of them are needed by this header (all drivers are still compiling).
* Thank you mmadia for the heads up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 19:04:45 +00:00
Michael Lotz 382a4b129a Add some locking to accesing PlaylistItems in these two cases as suggested by
Stephan.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 18:42:46 +00:00
Michael Lotz 6a5cf0a1f2 Allow shift-return to discard the filter so you can decided whether or not the
filter shall stay in effect when opening a selection.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 18:17:22 +00:00
Michael Lotz 2932770972 Fix missing check that would cause non-matching poses to show up on attribute
changes (which may also happen on creation of new files).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 17:41:26 +00:00