[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
VideoPlayer.app - Some questions and a POD
From: |
Raffael Herzog |
Subject: |
VideoPlayer.app - Some questions and a POD |
Date: |
Tue, 15 Jul 2003 18:07:37 +0200 |
Hi again,
The proof of concept is somewhat running, and I already learned a lot about
OpenStep programming :) However, I still need help with some problems.
First of all, a feature request:
The X11 backend needs to be thread-safe, if not, then bye bye VideoPlayer.app.
I started to make the backend thread-safe, so now it works with
VideoPlayer.app, but it locks up about any other application. :) Looks like I
forgot some calls to XUnlockDisplay()...
If there are no objections, I continue with my work on the backend and submit
a patch when it's ready (or even better, someone who knows the backend very
well does it).
I understand that GNUstep itself doesn't need it, but as soon as there is more
than thread using X11 (which could also happen with other projects, e.g. a
fictive project GSLyX), the backend needs to lock the display properly.
Comments?
And now the questions:
1. Repainting
I'm having some strange repaint problems. I'm really *very* sure that the
coordinates passed to libxine are correct, so I don't think there's something
wrong there. It's certainly no locking problem, locking is done properly.
Here's a screenshot of VideoPlayer.app before it had to repaint it's video
window:
http://dev.raffael.ch/VideoPlayerShot-ok.png
This is a screenshot of the video window after I resized it some times (you
get similiar effects by just raising it):
http://dev.raffael.ch/VideoPlayerShot-broken.png
I also tried to put everything into a NSBox to make sure that there's some
opaque view behind it, but this did't help, neither.
Any ideas what this could be? I myself am not really sure whether it's xine or
whether there's something strange going on in GNUstep - although, as I already
said, Xine *always* receives the correct coordinates... IMHO... :)
I'm using the art backend, the window was set to NonRetained and OneShot when
I made these screenshots. Exactly the
If I set the window it to Retained or Buffered (with or without OneShot,
doesn't matter), it's getting better, however, there are still some problems:
- Sometimes, the buffer gets flushed too late and the xine stuff gets erased,
but no black areas where there shouldn't be any.
- I don't receive enough repaint events (notably, the expose events are
missing).
- When I now start a background thread that makes Xine repaint periodically,
the effect is back.
I think, I'll get the best results with NonRetained and Non-OneShot, like this
I receive exatly the repaints I need - however, the effect is still the same.
Fiddling with useOptimizedDrawing: didn't change anything.
Any ideas? Any pointers what I can do to find out more about the problem would
be helpful, too.
2. Screen coordinates
I checked that the screen coordinates that libxine receives from me are
correct. However, I just assume that no coordinate system is scaled, which is
a hack. So, what's the best way to convert view coordinates to screen
coordinates? I need the following information:
- Position of the VideoView relative to the top left corner of the contents of
the window in pixels.
- Size of the VideoView in pixels.
- Position of the top left corner of the windows contents relative to the top
left corner of the screen in pixels.
I tried to use convertBaseToScreen, but this only gives me garbage. (Why?
Isn't that one supposed to do exactly what I want?)
3. Window decorations
I need the sizes of the window decorations (for the position of the windows
contents). My title bar has a height of 19 pixels, which is currently
hardcoded. Can I get these informations somehow?
cu & TIA,
Raffi
--
The difference between theory and practice is that in theory, there is
no difference, but in practice, there is.
Raffael Herzog - herzog@raffael.ch - http://www.raffael.ch - ICQ #67961355
- VideoPlayer.app - Some questions and a POD,
Raffael Herzog <=