3275 Commits

Author SHA1 Message Date
Clemens Zeidler
1294543de9 Initial work on an index server. No add-on yet so quite useless at the moment, but a clucent full-text search add-on is coming soon.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-27 13:55:45 +00:00
Stephan Aßmus
43eea4c2c4 Apparently it does not work... convert to TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 22:56:50 +00:00
Stephan Aßmus
76d9e05341 Introduce a new flag for drawing BBitmaps, B_WAIT_FOR_RETRACE
which triggers waiting on the retrace semaphore in app_server
just before drawing the bitmap. This potentially removes any
additional delay when doing this client side. Completely untested. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39097 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 22:22:45 +00:00
Stephan Aßmus
ed55cb5a22 Cache the retrace semaphore. Use the right kind of locking
in the method that needs it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39096 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 22:19:43 +00:00
Axel Dörfler
2e52bd7b8c * The default decorator now remembers its last mouse down action, and only
recognizes a double click as double click if the action didn't change.
* This fixes bug #6699.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39064 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 11:41:40 +00:00
Michael Pfeiffer
5a695bce10 * Use layout API in libprint dialogs.
* Use layout API in preview printer add-on.
* Use layout API in some dialogs in PDF Writer.
* Removed unused class PrinterSetupWindow from PDF Writer.
* Improved layout in print_server configuration dialog.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38986 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-16 19:56:34 +00:00
Stephan Aßmus
9d570aa4dd Some drawing mode implementations actually use the color
passed to the pixel format methods. Don't use a dummy color
for drawing dots. (Untested, but should fix Clockwerk time
line objects drawing)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38955 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-12 09:48:12 +00:00
Jérôme Duval
39eb6571be registrar: Actually checks if the app is running before asking it to quit, iterates until finding a valid app.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-08 20:06:51 +00:00
Stephan Aßmus
619ccfae94 * Removed a line of long-dead code.
* Make sure that turning off anti-aliased font rendering
   also works when subpixel-anti-aliasing is used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 10:33:51 +00:00
Clemens Zeidler
7306ba0448 Watch the window look and remove a window from a S&T group if the look changed to B_NO_BORDER_WINDOW_LOOK.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 21:46:42 +00:00
Clemens Zeidler
08a79ab22c Fix size limits function name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 20:22:49 +00:00
Clemens Zeidler
dcbc4af5d1 - Add size limit changes to the listener interface.
- Update size limit constraints in S&T only if necessary.
- Header style fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38682 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-17 04:04:02 +00:00
Rene Gollent
697e029919 Fix app_server build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-12 15:25:03 +00:00
Clemens Zeidler
cd4692196c Revert my last changes for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-01 02:52:33 +00:00
Stephan Aßmus
4177bfe69f * AppendPicture() and RemovePicture() are weird, since
the ServerPicture calls those itself from SetOwner().
  Since there are asserts in ServerPicture about fOwner,
  it was easiest to fix the code by using *only* SetOwner()
  from within ServerApp to add or remove pictures.
* SetOwner() was broken, since it called a method which
  potentially removed the last reference and then still
  accessed memory of the now free'd ServerPicture instance.
  The easiest fix is to just increase the reference count
  temporarily.
* SetOwner() wrongly returned false when the new owner was NULL.
* NestPicture() should simply add it's own reference. There
  are two places where it is called, and only one of them
  added the extra reference. The other one only acquired the
  implicit reference that the ServerApp owns, but pictures
  that remove nested children remove a reference from them.
  This could leave stale pointers around of course.
* Added more asserts about fOwner.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 22:07:50 +00:00
Stephan Aßmus
5911196b9c Reading the contents of the screen requires the exclusive lock
to avoid someone drawing into it at the same time. In a debug
build, this avoids hitting an ASSERT.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 11:45:53 +00:00
Stephan Aßmus
45db9a2073 Made the logic behind the locking in the outer and inner
message loop more clear, both in the code and also via
comments. I get the occasional drop into the debugger
because MultiLocker says the Readlock has been acquired
twice. I don't see how it is possible from the code and
it could be another bug in the MultiLocker debugging
facilities, but the code should be clearer now anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 11:19:23 +00:00
Clemens Zeidler
d4272f888e Fix SendWindowBehind. It now sets the window layer position behind the specified window. If behindOf is NULL it is send to the bottom. Please review if it really was broken! At least it has not worked as I had expected and what I read from bebook.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38473 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 02:04:46 +00:00
Axel Dörfler
4cdd7099dc * Fixed a potential crash (partition may be NULL). This fixes CID 1544.
* Added missing authors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38462 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-30 20:47:22 +00:00
Stephan Aßmus
672397ba1a The list of Reader plugins will also not remain sorted,
the same mechanism needs to be applied as for Decoders,
so that user add-ons are always found before system
add-ons.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-25 22:27:12 +00:00
Stephan Aßmus
593d6e6786 Removed debug output which would get annoying soon.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-25 09:10:21 +00:00
Stephan Aßmus
b707be21d2 Fixed copy'n'paste bug: _FindDecoder returned B_ERROR went it was supposed
to return false. This happened when searching decoders in
/boot/common/add-ons/media/plugins, which does not exist on a default image
and thus broke finding *any* decoder, it only worked when you had some in
/boot/home/config/add-ons/media/plugins... sorry and thanks Alex Wilson
for the heads up!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-25 09:09:18 +00:00
Stephan Aßmus
854ac70a95 * When unregistering plugins, decoders specifically,
we need to remove its globally registered formats
   from the FormatManager.
 * When searching decoders for a given format, we need
   to search by add-on directory, since the decoder
   list will not stay sorted once some have been removed
   or added after the initial add-on scan.

These fixes make it finally possible to rebuild media
plugins and have the media_server pick up the changes
without needing a restart.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-24 17:46:11 +00:00
Stephan Aßmus
424faefd92 Added RemoveFormat(), the FormatManager was previously
missing any way to remove previously registered formats.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38337 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-24 17:43:13 +00:00
Stephan Aßmus
f242acd5a0 Fixed a race condition in MultiLocker, when compiled in DEBUG mode:
The fWriterThread and fWriterStackBase were reset in WriteUnlock()
without holding any lock. While running a DEBUG compile of app_server,
I ran repeatedly into an assertion in the mouse event thread, that
it was not the write lock holder anymore when calling WriteUnlock().
My theory (also discussed with Axel, thanks!) is as this: Some random
thread holds the write-lock. The mouse event thread is allowed to run
when that thread releases the write-lock, but the thread is rescheduled
before it resets the write-lock-holder values (B_DO_NOT_RESCHEDULE only
means rescheduling is not forced, but it may happen anyway). Then the
mouse thread runs, acquires the write-lock, sometime later the original
thread continues to run, and completes WriteUnlock() with resetting the
holder values. When the mouse thread continues to run and eventually
calls WriteUnlock(), the holder values do not match anymore. The theory
is further confirmed by the fact, that fWriterThread was always -1 in the
assert and not some random other thread.

As mentioned, only affected DEBUG builds of app_server, in release builds,
another lock protects the holder values.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-24 13:46:48 +00:00
Stephan Aßmus
45b9ce0cd3 * It's easier if we deal with just entry_refs instead of converting
to BEntry and back to entry_ref. This ommits a check to
   BEntry::InitCheck(), but AddOnMonitor should pass us only valid
   entry_refs.
 * Removed no longer valid TODO.

TODO: There is still some problem with reloading add-ons, once they have
been reloaded, they fail to instantiate properly, as if the entry_ref
is pointing to the wrong node.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38328 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-24 09:46:55 +00:00
Stephan Aßmus
8e7b93278e * Turn a lot of printf()s into TRACE()s.
* Converted apparently non-fatal error output into TRACE output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38327 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-24 09:44:10 +00:00
Stephan Aßmus
19cd5c15d2 The media_server supports updates to add-ons now.
It unloads any media_format mappings when an add-on
becomes unavailable, and consequently reloads the
supported formats and similar when the same add-on
becomes available again. Previously it would only
load previously unkown add-ons by node-monitor
events (unkown name). What also works is that user
add-ons shadow/hide system add-ons when installed,
and the system add-on will become effective immediately
when removing the user add-on again. One thing to
note is that certain IDs will not stay consistent.
I am not aware of an application for which it could
be a problem, most should rememeber codecs by name.
In any case, I only tested add-on events a lot, and
not so much the effects of unstable media_file_format
IDs, so it's possible there are regressions, though
only when installing new versions of add-ons, which
previously mostly required a media_server restart
anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38282 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-19 19:59:37 +00:00
Oliver Tappe
269ebc04b9 Fix #6373, second try
* make BDADDR_* macros refer to value types instead of addresses
* adjust all interfaces using bdaddr_t* to use (mostly const) refs instead,
  which IMHO makes the interface & code clearer
* that got rid of a couple of const incorrectness casts
* some cleanup along the way


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-19 15:29:02 +00:00
Stephan Aßmus
ab45ec86ab More helpful debugger message.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 15:45:24 +00:00
Stephan Aßmus
52ede95cd7 * Removed outdated USE_MULTI_LOCKER build option
* Don't acquire the read-lock in WindowForClientLooperPort,
   since MultiLocker does not support nested read-locks.
   Use an assert instead, however the method does not appear
   to be used anywhere at the moment.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 10:10:27 +00:00
Clemens Zeidler
bba6f48d64 Add Notify* prefix to DesktopObservable hooks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 23:44:30 +00:00
Clemens Zeidler
ee9246d5f5 Remove unused communication port, pointed out by Axel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38216 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 23:23:02 +00:00
Clemens Zeidler
26d8064ea8 Lock WindowForClientLooperPort method and add comment that the window lock has to be held if accessing the a WindowList.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 22:56:19 +00:00
Clemens Zeidler
c0494bc592 Add facility to communicate with the desktop listener over an app server link. The ServerWindow dispatch the message to the DesktopObservable which dispatch it to the correct listener.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38169 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 06:25:55 +00:00
Clemens Zeidler
b8a44a250e Add function to find a window in the app server by the client looper port id. Need this for the stacking api e.g. to stack window x on window y.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38168 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 06:23:06 +00:00
Rene Gollent
6e23be561a Fix build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38161 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 20:58:35 +00:00
Stephan Aßmus
119e788a15 Corrected outdated comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 19:34:15 +00:00
Stephan Aßmus
b6865b963b Rewrote the fake font overlay support, as the previous implementation
had several problems: First of all it duplicated the FontCacheEntry
retrieval and locking code. Second it was really slow to do the whole
lookup for every single glyph. Third is used the FontManager without
locking, which could result to app_server crashes, mostly at startup,
while the FontManager thread was scanning the fonts and the glyph
layout was already using it. Forth it dereferenced a FontStyle
pointer without checking it against NULL. And lastly it didn't use
the font size of the original font for the fallback font.

The new algorithm addresses not only these, but also puts the glyphs
which are unsupported by a font and retrieved from the alternative
font, into the FontCacheEntry of the original font, so that the
HasGlyphs() check succeeds the next time around and does not need to
use the fallback algorithm anymore. There is also less manual management
of locking and FontCacheEntry recycling, this is now taking care of by
FontCacheReference objects on the stack.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38154 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 19:24:20 +00:00
Stephan Aßmus
e404b4ed2a * The Glyph() method takes an optional FontCacheEntry* parameter
which can do an alternative lookup of the glyphCode to glyphIndex
  and who's FontEngine is used to retrieve the GlyphCache object.
  The glyph however is inserted into the Cache of the original entry.
* GlyphCache objects are no longer looked up by index, but by charCode,
  which should not be a functional change, but allows to lookup glyphs
  from the cache for which the underlying FontEngine does not have
  a code to index mapping.
* Fixed an operator precedence bug in the signature generation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 19:17:11 +00:00
Adrien Destugues
fbebcdd42d CID 1743 : Memory leak on error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38132 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 08:14:34 +00:00
Adrien Destugues
8e13f13e5c CID 1744 : memory leak on error
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 08:11:47 +00:00
Stefano Ceccherini
48a05691c4 directory was leaked. CID 1745
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-15 09:59:20 +00:00
Adrien Destugues
78e421e05e Turns out this was right after all. Thanks to Rene for the explanations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-13 14:08:15 +00:00
Adrien Destugues
d84da869d5 CID 1556 : wrong cast type.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-13 13:18:36 +00:00
Clemens Zeidler
c84e125085 Rework listener interface as suggested by Axel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38072 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 23:05:31 +00:00
Clemens Zeidler
5483fa4e78 - Make RebuildAndRedrawAfterWindowChange public. This is useful when changing the window footprint from the outside. In this case RebuildAndRedrawAfterWindowChange recalculate the clipping and everything. Need this when I switch a decorator into a SAT stacking mode which is not a standard desktop operation. In this case the tab size is adjusted and also the window clipping need to be recalculated.
- First unregister listener reload decorators and then register new listener.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 22:09:28 +00:00
Clemens Zeidler
f182b4e2f9 Make _GetButtonSizeAndOffset protected.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 21:58:21 +00:00
Clemens Zeidler
d25313d44f Add listener for the tab location.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38067 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 21:19:49 +00:00
Axel Dörfler
d45bbb649e * Implemented that pressing the window modifier plus double click will minimize
the window. This closes ticket #6429.
* Got rid of useless _Extract*() methods. Also removed the _ActionFor() variant
  that only took a message.
* Removed unused "invalidate" variable in MouseUp().
* Coding style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 10:00:16 +00:00