Changeset 80136 in webkit


Ignore:
Timestamp:
Mar 2, 2011 8:57:01 AM (13 years ago)
Author:
Philippe Normand
Message:

2011-03-01 Philippe Normand <pnormand@igalia.com>

Reviewed by Eric Carlson.

[GStreamer] support in mac video fullscreen controller
https://bugs.webkit.org/show_bug.cgi?id=52280

Factored the code to configure the video overlay in a new private
method of the controller and added GStreamer support to it.

  • WebView/WebVideoFullscreenController.h:
  • WebView/WebVideoFullscreenController.mm: (-[WebVideoFullscreenController setupVideoOverlay:]): (-[WebVideoFullscreenController windowDidLoad]): (-[WebVideoFullscreenController setMediaElement:WebCore::]): (-[WebVideoFullscreenController windowDidExitFullscreen]):
Location:
trunk/Source/WebKit/mac
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/mac/ChangeLog

    r80061 r80136  
     12011-03-01  Philippe Normand  <pnormand@igalia.com>
     2
     3        Reviewed by Eric Carlson.
     4
     5        [GStreamer] support in mac video fullscreen controller
     6        https://bugs.webkit.org/show_bug.cgi?id=52280
     7
     8        Factored the code to configure the video overlay in a new private
     9        method of the controller and added GStreamer support to it.
     10
     11        * WebView/WebVideoFullscreenController.h:
     12        * WebView/WebVideoFullscreenController.mm:
     13        (-[WebVideoFullscreenController setupVideoOverlay:]):
     14        (-[WebVideoFullscreenController windowDidLoad]):
     15        (-[WebVideoFullscreenController setMediaElement:WebCore::]):
     16        (-[WebVideoFullscreenController windowDidExitFullscreen]):
     17
    1182011-02-23  Joseph Pecoraro  <joepeck@webkit.org>
    219
  • trunk/Source/WebKit/mac/WebView/WebVideoFullscreenController.h

    r69318 r80136  
    3535@class WebVideoFullscreenHUDWindowController;
    3636@class WebWindowFadeAnimation;
     37@class QTMovieLayer;
    3738
    3839@interface WebVideoFullscreenController : NSWindowController {
     
    5960- (void)setDelegate:(id <WebVideoFullscreenControllerDelegate>)delegate;
    6061
     62- (void)setupVideoOverlay:(QTMovieLayer*)layer;
    6163- (void)setMediaElement:(WebCore::HTMLMediaElement*)mediaElement;
    6264- (WebCore::HTMLMediaElement*)mediaElement;
  • trunk/Source/WebKit/mac/WebView/WebVideoFullscreenController.mm

    r74733 r80136  
    3939#import <wtf/UnusedParam.h>
    4040
     41#if USE(GSTREAMER)
     42#import <WebCore/GStreamerGWorld.h>
     43#endif
     44
    4145SOFT_LINK_FRAMEWORK(QTKit)
    4246SOFT_LINK_CLASS(QTKit, QTMovieLayer)
     
    97101}
    98102
     103- (void)setupVideoOverlay:(QTMovieLayer*)layer
     104{
     105    WebVideoFullscreenWindow *window = [self fullscreenWindow];
     106#if USE(GSTREAMER)
     107    if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType) {
     108        WebCore::GStreamerGWorld* gstGworld = _mediaElement->platformMedia().media.gstreamerGWorld;
     109        if (gstGworld->enterFullscreen())
     110            [window setContentView:gstGworld->platformVideoWindow()->window()];
     111    }
     112#else
     113    [[window contentView] setLayer:layer];
     114    [[window contentView] setWantsLayer:YES];
     115    if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType)
     116        [layer setMovie:_mediaElement->platformMedia().media.qtMovie];
     117#endif
     118}
     119
    99120- (void)windowDidLoad
    100121{
     
    104125#else
    105126    WebVideoFullscreenWindow *window = [self fullscreenWindow];
    106     QTMovieLayer *layer = [[getQTMovieLayerClass() alloc] init];
    107     [[window contentView] setLayer:layer];
    108     [[window contentView] setWantsLayer:YES];
    109     if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType)
    110         [layer setMovie:_mediaElement->platformMedia().media.qtMovie];
    111127    [window setHasShadow:YES]; // This is nicer with a shadow.
    112128    [window setLevel:NSPopUpMenuWindowLevel-1];
     129
     130    QTMovieLayer *layer = [[getQTMovieLayerClass() alloc] init];
     131    [self setupVideoOverlay:layer];
    113132    [layer release];
    114    
     133
     134#if !USE(GSTREAMER)
    115135    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidResignActive:) name:NSApplicationDidResignActiveNotification object:NSApp];
    116136    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidChangeScreenParameters:) name:NSApplicationDidChangeScreenParametersNotification object:NSApp];
     137#endif
    117138#endif
    118139}
     
    131152    _mediaElement = mediaElement;
    132153    if ([self isWindowLoaded]) {
    133         QTMovie *movie = _mediaElement->platformMedia().type == WebCore::PlatformMedia::QTMovieType ? _mediaElement->platformMedia().media.qtMovie : 0;
    134154        QTMovieLayer *movieLayer = (QTMovieLayer *)[[[self fullscreenWindow] contentView] layer];
    135155
    136156        ASSERT(movieLayer && [movieLayer isKindOfClass:[getQTMovieLayerClass() class]]);
    137         ASSERT(movie);
    138         [movieLayer setMovie:movie];
     157        [self setupVideoOverlay:movieLayer];
     158#if !USE(GSTREAMER)
     159        ASSERT([movieLayer movie]);
    139160        [[NSNotificationCenter defaultCenter] addObserver:self
    140161                                                 selector:@selector(rateChanged:)
    141162                                                     name:QTMovieRateDidChangeNotification
    142                                                    object:movie];
     163                                                   object:[movieLayer movie]];
     164#endif
    143165    }
    144166#endif
     
    167189- (void)windowDidExitFullscreen
    168190{
     191#if USE(GSTREAMER)
     192    if (_mediaElement && _mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType)
     193        _mediaElement->platformMedia().media.gstreamerGWorld->exitFullscreen();
     194#endif
    169195    [self clearFadeAnimation];
    170196    [[self window] close];
Note: See TracChangeset for help on using the changeset viewer.