Opened 15 years ago

Last modified 14 years ago

#208 assigned enhancement

mplayer in win32 with dual monitors, can't move to other monitor

Reported by: mplayer@… Owned by: saschasommer@…
Priority: normal Component: vo
Version: HEAD Severity: minor
Keywords: Cc:
Blocked By: Blocking:
Reproduced by developer: Analyzed by developer:


In Windows (I'm using XP), if I try to move mplayer to my 2nd monitor, the video
doesn't work; it just displays a solid green color. (If I only move it halfway
across, the half on the 1st monitor displays fine but the other half is just
green (probably not a big deal if this halfway case doesn't work). Once the
window is moved totally to the other monitor, it's all the solid green, and the
window doubles in size and stretches across both monitors.)

I also get these error messages when the window is totally on the 2nd monitor:
<vo_directx><ERROR>UpdateOverlay? failed
<vo_directx><ERROR>invalid rectangle

I'm using this version: MPlayer dev-CVS-050109-16:39-3.2.3
from mplayer-win32-mingw-dev-cvs20050109.exe
which I got here:

Change History (6)

comment:1 Changed 15 years ago by reimar

  • Resolution set to invalid
  • Status changed from new to closed

This can not work due to hardware/driver limitations. Either start MPlayer on
the second monitor (-adapter or something) or use -vo directx:noaccel (I _think_
this should work). -vo gl2 _might_ work if both monitors are connected to the
same graphics card.

comment:2 Changed 15 years ago by mplayer@…

  • Resolution invalid deleted
  • Status changed from closed to reopened

BSPlayer and VLC are able to do this though (and Media Player Classic works too
if I pause the movie before moving the window), so it seems like there's a way
to work around driver limitations. Maybe they just stop playing and then
restart it from the appropriate position? (In BSPlayer there's a short delay
before it starts playing again on the 2nd monitor, which I think is fine; in VLC
though I didn't notice any delay.)
-vo directx:noaccel doesn't work, but it's better than the default (instead of
all green, it shows a still image from the video, and the window stays the right
-vo gl2 works (and actually works both when both monitors are on the same video
card, and when they're on separate video cards). But, then I can't resize the
window; is it possible to add that feature? If so, then I guess this bug can be
changed into a feature request for that. (Do VLC/BSPlayer work because they're
using OpenGL? VLC's setting says DirectX.)

comment:3 Changed 15 years ago by reimar

  • Owner changed from alex@… to saschasommer@…
  • Severity changed from normal to enhancement
  • Status changed from reopened to new

It should be possible to do the moving by reinitializing directx. But that also
means you need to detect when the window is moved to another screen. I'll leave
it open as an enhancement request. Also, Sascha is about the only one doing
windows development so reassigned (but don't expect to see results soon).
Btw. Do those programs work only when moving the window completely or already
when you move it only partially to the other screen?

comment:4 Changed 15 years ago by mplayer@…

In BSPlayer & VLC when the window is partially on both monitors, it shows video
only in the monitor containing the bigger portion of the window; the other part
is solid black.

comment:5 Changed 15 years ago by saschasommer@…

  • Status changed from new to assigned

I didn't check the code but from the vlc logs it looks like they are doing a
complete uninit and then recreate all directdraw objects when the window moves
to the other screen. Doing this in MPlayer, too would require a big code
rewrite. Vo directx needs a rewrite anyway, but I would like to wait for G2 or
maybe until someone ports libvo2 to G1 for this. After all I do not count this
feature as very important. Decide which monitor to use before you start
playback und use -adapter to select it. Is there any error
message displayed when you try to move the window with -vo directx:noaccel?
Last time I tryed this worked...

comment:6 Changed 14 years ago by reimar

In CVS, both -vo gl and -vo gl2 should work fine if both monitors are connected
to the same card.
-vo directx is unchanged though.

Note: See TracTickets for help on using tickets.