Commit Graph
100 Commits
Author SHA1 Message Date
Stephan Aßmus c85e773511 Forgot to remove invalid TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:10:29 +00:00
Stephan Aßmus 0f3f344fb4 * Implemented calculating the correct display aspect ratio.
* Removed some dead code.
* Fixed a style violation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:09:23 +00:00
Stephan Aßmus f9aac21f11 Define the proper FFmpeg flag.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:08:00 +00:00
Stephan Aßmus a920a6e2a0 Use media_format pixel_width/height_aspect as it was meant to be used. This
avoids rounding issues (1440x1080 -> 1920x1080 instead of 1921x1080).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:05:55 +00:00
Stephan Aßmus 591ce51a9c Improved error logging.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31476 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:04:40 +00:00
Stephan Aßmus dec28f85e0 * Better debug output.
* We can actually tell libavformat to discard packets for streams that
  we are not interested in. Found this in the ffplay code. This should hopefully
  avoid the efficiency impact of using one AVFormatContext per stream.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 11:09:49 +00:00
Stephan Aßmus 12a9eb5d93 * Coding style cleanup, some removal of dead code.
* Refactored NegotiateOutputFormat() and Decode() into two separate private
  methods each, one for video and one for audio.
* Keep reading chunks when video decoding, until we have got a picture. This
  gets us scrambled video instead of a black picture for h264 in mpegts.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 09:43:06 +00:00
Stephan Aßmus 0c4d88d353 Added "mpegts" to the supported demuxers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 09:41:00 +00:00
Stephan Aßmus 274f43b917 * Virtualize the stream index and implement finding streams when the
context has AVPrograms. I gather this feature is for container streams
  that contain multiple "groups of streams" like how it would work for
  satilite mpeg-ts streams with multiple TV channels in one stream. For this
  to be properly supported, we should extend the BMediaFile/Track API. For
  now, the AVFormatReader uses the first program, if one is there. This
  was also needed to get make mpegts demuxer work, but it is not yet enabled
  for other reasons.
* Read more probe data. 1024 bytes were not enough to detect "mpegts" properly
  for example.
* For now, I disabled the locking in the AVFormatReader hooks themselves,
  this should not be necessary, though I hope libavformat is reentrant as
  long as you have your own AVFormatContext for each thread. So far everything
  hints that it is the case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31454 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 08:51:31 +00:00
Stephan Aßmus 5d9b65c488 * Dump the libavformat string again in Sniff().
* Separate TRACE output for seeking related methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 22:52:49 +00:00
Stephan Aßmus a612697fc9 Actually, use a more style compliant name, and since the flags don't contain
just architecture specific flags, call them just HAIKU_FFMPEG_DEFINES.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 22:05:00 +00:00
Stephan Aßmus 7486c08251 Avoid some code duplication for setting the architecture depending Cc and C++
flags, using a global variable FFMPEG_PLATFORM_DEFINES.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 21:57:08 +00:00
Stephan Aßmus 922c7be61c Do not leak the first StreamCookie that we used in Sniff() and do not free
in FreeCookie().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 15:05:52 +00:00
Stephan Aßmus f0eb77fee4 Doh, of course we had ASF before! Sorry about that. Must have been blind.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 14:52:50 +00:00
Stephan Aßmus fcb875cdf4 Do no re-use the same packet again if not supposed to. Was not a problem with
how everything currently worked. (Packet peaking was only done once in Init().)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 14:40:09 +00:00
Stephan Aßmus 7965dde0ca Get the AVFormatReader into a usable state. DemuxerTable.cpp controls which
container formats we support. I hope I have turned on only those that don't
have an implementation already (did we support ASF already?). I mostly tested
with AVI and that works reasonably well, but I only tested raw audio so far.
However, the backend for Marcus' avi_reader is much nicer than FFmpeg, so I
think it should stay and have disabled the support for AVI in AVFormatReader.
A big disappointment is that MPG containers only give scrambled video. It may
be a problem of the AVCodecDecoder, but I am not so sure. After all, it works
fine for other container formats. If I am not mistaken, VLC also does not use
the mpeg demuxer from FFmpeg. :-\ On top of that, libavformat detects the
time_base and stream duration wrongly for one of my test MPGs.
As for the implementation: Although seeking in libavformat happens for an
individual stream, in reality, the packets for all other streams need to be
flushed (that's also what happens in the libavformat tutorials I've seen).
Since our MediaKit API allows to seek tracks indivually, this is of course
a no-go, since then all other tracks would be out of sync. My solution is to
simply open the demuxer once for each stream and then completely ignore the
packets of the respective other streams. This also works around the problem
that libavformat is unable to provide packets by stream, requiring the
API user to queue the packets that he needs not now, but later for other
streams. It also means we have to no memory copies, since we can directly
use the packet buffer until the next call to GetNextChunk().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31421 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 13:43:02 +00:00
Stephan Aßmus db627302b7 Support MP2 audio also in MPEG containers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31420 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 13:31:38 +00:00
Stephan Aßmus 88e5472450 Small coding style fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-05 10:52:38 +00:00
Stephan Aßmus 18128d58dc Patch by Raghuram Nagireddy:
Re-use the kernel emulation of the FS shell to implement a FUSE module
for BFS. In theory, it could use any Haiku file system implementation
just like the FS shell itself, but currently only the BFS code supports
being compiled as an FS shell module. The build target is <build>bfs_fuse
On Ubuntu, you would do this:

sudo apt-get install libfuse-dev
jam \<build\>bfs_fuse
mkdir path/to/moundPoint
path/to/bfs_fuse /dev/sdaX path/to/mountPoint

And that will mount your BFS volume at /dev/sdaX
read/write. As this is new code, you should be careful with your
data and expect potential data loss. Not that I don't trust Raghu's
code, but a warning is always better with such things. So far, my
tests have been successful and it is great to finally have write
support for BFS in Linux! Thanks a lot, Raghu, for your great work!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31409 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-05 10:36:30 +00:00
Stephan Aßmus 1c55ed0826 A small correction and one additional tip.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-04 12:31:55 +00:00
Stephan Aßmus 827faf77a4 * Fleshed out some more of the format detection.
* Moved stuff from testing in Sniff() into class members.
* Added function to gfx_utils() that converts an FFmpeg pix_fmt to color_space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-03 21:40:19 +00:00
Stephan Aßmus a244fc3ac7 * It actually helps a lot to turn on all the demuxers if you want to use any.
* The URLProtocol idea seems not to work out, so I removed that code, but
  the other idea of setting up a ByteIOContext actually works, once I seek
  back to the beginning of the stream after reading the initial probe buffer,
  we may also offset the buffer pointer in the ByteIOContext to where we
  have already read, but I am not sure of possible side effects of that.

We can now probe for the correct demuxer and detect streams.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-03 00:26:11 +00:00
Stephan Aßmus b4ef57412c Work in Progress of trying to get libavformat to detect anything...
unsuccessful so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-02 13:31:50 +00:00
Stephan Aßmus 668ed70bd0 * Use a static global object to initialize libavformat and libavcodec.
* Turn off tracing in the AVCodecDecoder which I accidentally turned on in
  a previous commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 21:16:55 +00:00
Stephan Aßmus 53db45b7d3 * Added libavcodec to include dirs of libavformat
* Removed inclusion of internal.h from libavcodec.h, it's not there in the
  plain FFmpeg 0.5 version of the file.
The last item fixes the GCC2 build, at least AFAICT.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 20:39:18 +00:00
Stephan Aßmus 5f25b3a353 Removed ffmpeg build system left-over.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 19:20:52 +00:00
Stephan Aßmus 27f6fb6ce7 * Renamed avcodec folder to ffmpeg.
* Cleaned up plugins Jamfile.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 19:19:49 +00:00
Stephan Aßmus 043eaa5c3f Cleaned up the source file names and code locations in the avcodec plugin,
unified the Reader and Decoder plugins and renamed the add-on to "ffmpeg".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 18:52:48 +00:00
Stephan Aßmus 007ea5873a Extended the ScrollView API a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31357 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 18:50:22 +00:00
Stephan Aßmus cd170ddc34 * Added libavformat. I would like to rename the plugin from "avcodec" to
"ffmpeg" and export multiple plugin types from the same plugin (Decoder and
  Reader).
* Work in progress on an libavformat based Reader plugin, does nothing yet.
* Moved config.h from libavcodec subfolder up one level, so that it's used
  by libavformat as well. Adjusted libavutil/common.h accordingly.
* Turned off GPL code in config.h
* Turned off BeOS muxers in config.h
* Turned on HAVE_THREADS and HAVE_PTHREADS, although that is nowhere used
  in the ffmpeg code (it appears).
* Indentation cleanup in avcodecplugin.h

I have built this with GCC4, but last night I built libavformat.a with GCC2
so I am hoping this doesn't break the GCC2 built.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 14:45:20 +00:00
Stephan Aßmus f3797c5ae5 Patch by Jeroen Oortwijn: Improve the tab-key focus-cycle ordering of the
Tracker Settings window. Thanks a lot! Fixes ticket #4051.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-30 16:34:13 +00:00
Stephan Aßmus c8e27e390c Unified the "no menu, border, controls" settings to a single "no interface"
setting and made them available in the context menu again. During my testing,
I couldn't find any weird behavior, only the window dragging should still be
a problem on slower computers when multiple mouse messages piled up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-30 12:47:41 +00:00
Stephan Aßmus 8fb7098371 Cut down on the required number of syscalls by using the new Haiku API
for reading/writing attributes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:35:39 +00:00
Stephan Aßmus 125f5b846c The copy_attributes() loop made one iteration too much trying to read and
write 0 bytes after doing a successful copy of an attribute. Since
fs_write_attr() was actually ignoring the position argument, this would just
clobber attributes and truncate them back to 0 bytes. This was fixed in the
previous commit, however, it should be noted that if the buffer which
copy_attributes() uses were too small, writing attributes which live in the
"small data section" iteratively would not work because of a current BFS
limitation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:13:33 +00:00
Stephan Aßmus 181593ba0b * Properly document why fs_write_attr() does what it does.
* As even the author of fs_attr.c was trying to use fs_write_attr() in an
  unsupported way in the cp copy_attributes() implementation, try to be
  more forgiving and support writing attributes at an offset. The method is
  required to behave inconsistent in that replacing bytes at offset 0 is
  not supported as replacing bytes at any other offset. Writing at offset 0
  will clobber the existing attribute to stay compatible with BeOS.

NOTE: BFS itself still does not support writing attributes at an offset which
are withing the "small data section". To work around this problem, programs
which copy attributes in a loop must make sure that their buffer is large
enough that such "small data section" attributes require only one loop
iteration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:08:43 +00:00
Stephan Aßmus 1f3691df0f * In theory, we should support getting the video aspect from the current stream.
* Added "Force Aspect Ratio" to Video menu and context menu.
* Removed some code duplication in handling the video size messages.
* Added track selection sub-menus to the context menu, replacing the IMHO
  not so important interface settings items.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31302 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-28 18:48:00 +00:00
Stephan Aßmus 07cad22ee7 Connect the Audio/Video track selection menus with the controller. Works great.
Totally "gapless", unlike any other media player I've ever used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31301 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-28 17:42:54 +00:00
Stephan Aßmus 791a4a7774 Fixed building with tracing on...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31275 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:15:29 +00:00
Stephan Aßmus f74eb15c31 Fixed building with tracing on.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31274 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:14:48 +00:00
Stephan Aßmus d8b88d0378 Whitespace cleanup and 80 chars/line fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31273 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:13:58 +00:00
Stephan Aßmus 7f3664f88e Small update.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:07:13 +00:00
Stephan Aßmus 224fb9cf6e Fixed the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-24 14:59:12 +00:00
Stephan Aßmus c454df7e29 This stuff is actually used on the build host platform as well...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31209 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 14:05:01 +00:00
Stephan Aßmus 4922427769 Implement killing the debugged team on quitting a TeamDebugger, the obviuos
way... thanks Ingo! Seems to work just fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 13:09:50 +00:00
Stephan Aßmus b9563a6fd9 Added NOTE on how to handle QuitRequested in the application and why using
the base class version is fine for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31202 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 12:20:14 +00:00
Stephan Aßmus 04743aeb5f Filled up the quitting code path a bit. The TeamDebugger throws up an alert
asking what to do with the debugged team. Killing it is not yet implemented.
Then it notifies the application about the quit request. That in turn tears
down the TeamDebugger and if no other ones are left, it quits itself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 12:14:05 +00:00
Stephan Aßmus 73b8cef5e6 Sorry for messing in this code, but I was a bit helpless how to fix the GCC2
build in another way...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31200 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 12:12:08 +00:00
Stephan Aßmus b9bbf08852 Small cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 11:05:16 +00:00
Stephan Aßmus e5a5e5da5a * Use auto-size-limits on the window.
* Use insets around everything. The visual change are insets also around the
  source code view. Another option would be to put the source code view on the
  right/bottom, attaching the window border and using a B_DOCUMENT_WINDOW
  resize knob on the window border. The register view could also use the
  additional height of the buttons. However, I agree it's somehow more logical
  to have the register view on the right side. Maybe only because of
  convention... so it's possibly still up for debate.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31198 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 11:04:38 +00:00
Stephan Aßmus 4aeb7a3cc2 * Made BTwoDimensionalLayout and BSplitLayout::GetInsets() const.
* Give access to BSplitLayout::SetInsets() and GetInsets() from BSplitView.
* Give access to BSplitView::SetInsets() from BSplitLayoutBuilder and
  LayoutBuilder.
* Some automatic white-space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 10:56:22 +00:00
Stephan Aßmus 448ab012ef Created an icon for the Debugger.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31176 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-22 09:04:02 +00:00
Stephan Aßmus 92772bbddd Patch by Christian Packmann:
* Implemented a CPU feature detection function in AppServer.cpp.
  The results are put into the global variable gAppServerSIMDFlags.
* Implemented an SIMD accelerated version of the bilinear bitmap
  scaling code that is the backend of BView::DrawBitmap(...,
  uint32 options) used by the MediaPlayer to smoothly upscale
  movies when no video overlay is available. The speed up is very
  noticable and a Core 2 Duo @ 1.8 GHz can play at 1920x1200 now
  without breaking a sweat. There is currently one SIMD version
  implemented which uses MMX and plain SSE.

Very cool! Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 22:07:54 +00:00
Stephan Aßmus b3601d823c * Update indentation style in TabView.h
* Added _MinTabeSize() to BTabView. It makes sure that the BTabView displays
  at least two tabs. In the future it should also add the room to display some
  buttons for cycling the currently displayed tabs left/right if there is more
  than can fit.
* In BTabView::Min/Max/PreferredSize(), use _MinTabSize() to compute the
  respective size.
* Improve Tab rendering code so there are no ugly overlaps at the right edge
  if the tabs falls directly on the view edge.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 13:04:51 +00:00
Stephan Aßmus ea603b7af3 Small style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 13:01:40 +00:00
Stephan Aßmus a560ab791b * Create the BColumnListViews with fancy borders.
* Add some spacing around most views in the top level layout.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31152 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 12:07:11 +00:00
Stephan Aßmus abe7a40cca Work around a GCC2 problem with dynamic casting a BHandler pointer to a BView
in BWindow::_FindView(int32 token). This fixes the BColumnListViews in
DebugAnalyzer and Debugger to draw their frames properly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 12:05:34 +00:00
Stephan Aßmus 8f24c71102 Reverted my change to usage of _get_object_token_(), it already means to use
a cached token... doh! Thanks Axel!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31140 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:47:28 +00:00
Stephan Aßmus 5c5195ee7e Fixed regression in SetViewCursor(). It wasn't possible anymore to switch
back to the system default cursor. For that cursor token, the global cursor
manager returns NULL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31138 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:26:34 +00:00
Stephan Aßmus 1f9fd6d866 * Added BSplitView drawing code to ControlLook.
* BSplitView uses ControlLook to draw itself.
* Small refactoring in SplitLayout to implement IsAboveSplitter(BPoint).
* BSplitView updates the view cursor when the mouse is above a splitter.
* Standard splitter size is now 6 pixels, which is a bit easer to hit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31137 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:03:33 +00:00
Stephan Aßmus 01206002ba * Added NOTE to BListView destructor about not freeing the items.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:00:33 +00:00
Stephan Aßmus 262c5f651e * Small cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:00:11 +00:00
Stephan Aßmus fa0ba1f855 Cache a view's server token. Avoids getting it for every
BView method that contacts the server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 14:12:30 +00:00
Stephan Aßmus 19e179ca4f * Moved the implementation of SetViewCursor from the thread of the
window of the view into the application thread. This solves the
  race condition with asynchronous SetViewCursor and deleting the
  cursor immediately afterwards for real.
* The ServerApp now requires a reference to the current cursor,
  just in case...
* Added TODOs for caching the BView token, it's currently resolved
  for every single BView call that talks to the server... not good!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31133 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 12:11:49 +00:00
Stephan Aßmus 5d62f8e0e5 Make it possible to properly use operator= on BCursors by making sure the
reference counting is maintained correctly in the app_server. While reviewing
this code, I have my doubts that my previous solution for handling pending
SetViewCursor() calls is always working as it is intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 10:10:01 +00:00
Stephan Aßmus 041b97a8b8 * Updated header indentation style and small cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-16 14:02:18 +00:00
Stephan Aßmus 5505e1909c * Apparently the "free_identify_partition_cookie()" function pointer should
not be NULL. If the intention is to allow this, then there is a bug somewhere
  else. Fixes booting on Macs, thanks to Zenja for testing this!
* Fixed what I believe to be an off-by-one error in BlockCount(). This also
  makes it symetrical with SetBlockCount().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-16 10:38:25 +00:00
Stephan Aßmus 914fb50397 * Added a couple TODOs after reading a bit in the source.
* Introduced a lock in GetDefaultDevice() and ReleaseDevice() as a quick
  solution to the race condition in those functions. It could also use
  proper atomic ref counting. Untested.
* Automatic white space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-15 15:15:32 +00:00
Stephan Aßmus c43e377cff Increase the file handle limit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-14 12:16:18 +00:00
Stephan Aßmus f76e944e24 * Fixed problems when installing onto non-empty target volumes. The
'system' folder will be a clean copy of the source volume. Other
  folders will be merged (as before), but in case a folder is in the
  way of a link or file from the source volume, it will now be purged.
* Clarified the alert for non-empty target volumes, so it is very clear
  what happens. (Maybe there ought to the be option to only copy the system
  folder, though.)
* Fixed a problem with copying attributes in certain cases.
* Fixed the main GUI not resetting state properly after encountering an
  error during the copy process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31042 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-14 11:07:52 +00:00
Stephan Aßmus dc3d592369 When the media server is not running, display an alert and offer to start it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31035 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 17:06:58 +00:00
Stephan Aßmus 6f8792ed23 Added BeHappy icon by zuMi. Thanks a lot and sorry for the delay! This is not
yet added to the BeHappy package AFAIK.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 13:56:25 +00:00
Stephan Aßmus 2d1a19bec7 Added idea icon by zuMi, which was added to app_server resources before, it's
used in idea alerts.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 13:53:55 +00:00
Stephan Aßmus 91c668a3d3 Added icon for PoorMan by zuMi. Thanks a lot and sorry for the delay!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31029 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 13:46:59 +00:00
Stephan Aßmus 34068836d3 Fixed Remove() operations to be O(1) again, I just didn't get it. The item
sorting does not need to be preserved. Thanks Marcus!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30995 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-08 07:01:58 +00:00
Stephan Aßmus cf8af72233 _InitReader(): source can only be NULL if we tried to allocate it ourself, so
we can set fErr to B_NO_MEMORY in that case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30989 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 19:47:16 +00:00
Stephan Aßmus 60a2c42f76 Check the params in SetTo().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 19:45:04 +00:00
Stephan Aßmus b7cf537e50 Added BMediaFile::_UnInit() and implemented the two SetTo() methods.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30987 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 19:43:26 +00:00
Stephan Aßmus b5ec3e5669 * Coding style clean-up.
* Use std::nothrow and check allocations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30986 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 19:35:14 +00:00
Stephan Aßmus bb56a763a6 Resolved TODOs in PluginManager about leaking plugins when they are no longer
needed. I've added MediaPlugin* fields to Reader and Decoder plugin classes
which are set when the PluginManager hands out new instances. This way the
manager knows what plugin created the Decoder or Reader instance in the
Destroy*() methods and can decrease the reference count accordingly. Also added
some FBC stuffing to Decoder and Reader. All media plugins need to be recompiled,
in case anyone has some outside the Haiku tree.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 18:11:05 +00:00
Stephan Aßmus 5fa2230d99 Just saw that _Remove(index) here was as broken as in TList.h.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30983 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 18:04:32 +00:00
Stephan Aßmus 85af513ad6 Remove() was completely broken if not removing the very last item.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30982 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 17:56:59 +00:00
Stephan Aßmus a55f3fb022 Patch by Joe Prostko: Add linking to libstdc++ in some places, which is
necessary when compiling the code for example with -O1 or with the upcomming
GCC 4.4. Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30979 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-06 10:35:14 +00:00
Stephan Aßmus 483f3c84d9 Added lightbulb icon made by zuMi (idea alerts). Great work, thanks a lot!
Fixes alert part of ticket #1429.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30969 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-05 08:43:41 +00:00
Stephan Aßmus 03807931d8 Patch by Geert Hendrickx:
* Fixed remapping the Control keys.
* Adjusted the caps-lock shifted keys, in case someone decides to exchange
  the left backspace key for the caps-lock key again.

Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30968 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-05 08:22:09 +00:00
Stephan Aßmus bc72ab054b I messed up the patch from ticket #3971, because I thought I could simplify it.
Sorry about that! This is now like in the original patch and fixes the ticket
for real.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 17:04:44 +00:00
Stephan Aßmus 97566384f7 Applied patch by Stef Busking: Adjust the current keyboard focus field along
with the mouse, so that switching between using the keyboard and mouse is more
fluent. Fixes ticket #3971.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30918 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 10:39:17 +00:00
Stephan Aßmus d73b4b33d3 Patch by Matt Madia: The DevelopmentBase optional package now
depends on CDRecord for mkisofs, which is used for building the
*-cd targets. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 09:17:12 +00:00
Stephan Aßmus 81110fefcf Applied patch by Matt Madia: Enlarge the image size from 400 to 500 MB, since
the current optional packages require this much.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30916 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 09:03:03 +00:00
Stephan Aßmus cabb897a5e * I obviously forgot to test copying playlist items.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30836 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-24 12:38:21 +00:00
Stephan Aßmus 49ac3f1dbe * Cleanup
* Removed already resolved TODO


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-24 12:37:56 +00:00
Stephan Aßmus c60fcc87e0 * Changed the PlaylistItem interface to be hopefully more flexible. It can
probably still be improved.
* Renamed EntryRefPlaylistItem to just FilePlaylistItem.
* Moved the "move into Trash" and "restore from Trash" implementation into
  FilePlaylistItem. Also added what's needed to allow Tracker to restore the
  entry itself.
* Refactored everything to make Playlist use PlaylistItems instead of
  entry_refs and all that entails...
* The transition to virtualize PlaylistItems is not complete yet in the
  Controller, since it still uses BMediaFile there. But it's much easier to
  change that now.
* Objects which keep a PlaylistItem around do correct reference counting, but
  some commands could be simplified if they were using references as well. It
  still should work correctly, though, if I didn't miss anything. It should also
  fix theoretical situations of encountering out-of-memory while messing with
  the Playlist leading to inconsistent state between Undo/Redo and then leaking
  items because of that.
* Added the discussed change that MediaPlayer checks it's own supported types
  before rejecting a file by super type. (untested)
* When importing playlist items, the currently playling item is better
  maintained during Undo/Redo.
* Some debugging code added in MediaTrackAudioSupplier, no functional changes.
* Fixed a number of coding style issues and automatic whitespace cleanup.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-24 12:21:56 +00:00
Stephan Aßmus e06d0e5187 Patch by Geert Hendrickx: Implemented a Colemak keymap. See <http://colemak.com>
for more information. Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-21 12:05:18 +00:00
Stephan Aßmus f8c4cae9a9 Patch by scottmc: updated p7zip package. Thanks a lot!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30809 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-21 09:55:40 +00:00
Stephan Aßmus 01b9223aa5 Woha, "anyways" is not proper English! Thanks bbjimmy for noticing!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-19 22:08:11 +00:00
Stephan Aßmus ba0e6050f5 Auto-hide cursor after 2 secs already, thanks Axel, for the suggestion.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30802 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-19 18:51:08 +00:00
Stephan Aßmus 18b1ca6bbe * Auto hide the mouse after 5 seconds.
* Disable the screen saver when playing in full screen mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30797 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 21:13:23 +00:00
Stephan Aßmus e9c3e84e6f Removed debugging left-over... sorry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 00:24:01 +00:00
Stephan Aßmus 2627bad195 * Removed unnecessary code and simplified some places in the drawing code paths.
* Calling BTextView::SetText() will invoke Window()->UpdateIfNeeded(), maybe
  since some recent changes only - we should perhaps look into this... (zooey),
  but the problem was that we called BControl::SetValueNoUpdate() after that,
  and thus we were drawing the color mark at the old offset and the invalidation
  in SetValue() was rendered effectless. Fixes #3719.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30784 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 00:20:07 +00:00
Stephan Aßmus dd09109647 * Refactor the "Remove and Put into Trash" backend a bit to allow giving it an
index and not work on the current selection only.
* Reenable the code in MainWin that implements the shortcuts to trigger this
  feature during playback. Now it uses the Undo/Redo stack and profits from
  existing polish.
* Add missing fPlaylist locking in MainWin at several places. Should not have
  caused any realworld problems, though.
* Add Undo/Redo shortcuts to MainWin and forward to Playlist window.
* Make sure the Playlist window opens on the same workspace as the player
  window. This could be seen when launching MediaPlayer on one workspace, later
  moving the window and then opening the Playlist window, it would open on
  the original workspace. The new behavior additionally pulls the playlist
  when it's already open and you invoke the "Playlist" menu item.
* Added the beginnings of a refactoring to make the Playlist and everything
  else use a PlaylistItem class, instead of entry_refs directly. This stuff is
  not yet used, though, just compiles.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30776 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-17 00:16:08 +00:00
Stephan Aßmus bae0154ca3 * I didn't like so much how the "Remove and Move into Trash" feature was
implemented. It didn't reuse existing code and didn't integrate well. No
  Undo/Redo except via Tracker, but not in the Playlist... some bugs as well
  (Remove had same shortcut as Randomize, Didn't maintain current playback item
  if last entry was removed)
* I need to reenable the main window short cut though. This is only temporary.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30768 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-16 11:29:19 +00:00