Changeset 55996 in webkit
- Timestamp:
- Mar 15, 2010 8:34:47 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r55995 r55996 1 2010-03-15 Philippe Normand <pnormand@igalia.com> 2 3 Reviewed by Gustavo Noronha Silva. 4 5 [GStreamer] replace g_idle_add / g_timeout_add calls with Timers in the gstreamer player 6 https://bugs.webkit.org/show_bug.cgi?id=35735 7 8 Replaced g_idle_add calls with Timers immediately started once 9 only. The g_timeout_add was replaced by a periodic Timer. 10 11 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 12 (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): 13 (WebCore::MediaPlayerPrivate::~MediaPlayerPrivate): 14 (WebCore::MediaPlayerPrivate::volumeChangedTimerFired): 15 (WebCore::MediaPlayerPrivate::volumeChanged): 16 (WebCore::MediaPlayerPrivate::processBufferingStats): 17 (WebCore::MediaPlayerPrivate::fillTimerFired): 18 (WebCore::MediaPlayerPrivate::maxTimeLoaded): 19 (WebCore::MediaPlayerPrivate::updateStates): 20 (WebCore::MediaPlayerPrivate::muteChangedTimerFired): 21 (WebCore::MediaPlayerPrivate::muteChanged): 22 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 23 1 24 2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 2 25 -
trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r55995 r55996 178 178 } 179 179 180 gboolean notifyVolumeIdleCallback(gpointer data)181 {182 MediaPlayerPrivate* mp = reinterpret_cast<MediaPlayerPrivate*>(data);183 mp->volumeChangedCallback();184 return FALSE;185 }186 187 180 void mediaPlayerPrivateMuteChangedCallback(GObject *element, GParamSpec *pspec, gpointer data) 188 181 { … … 190 183 MediaPlayerPrivate* mp = reinterpret_cast<MediaPlayerPrivate*>(data); 191 184 mp->muteChanged(); 192 }193 194 gboolean notifyMuteIdleCallback(gpointer data)195 {196 MediaPlayerPrivate* mp = reinterpret_cast<MediaPlayerPrivate*>(data);197 mp->muteChangedCallback();198 return FALSE;199 }200 201 gboolean bufferingTimeoutCallback(gpointer data)202 {203 MediaPlayerPrivate* mp = reinterpret_cast<MediaPlayerPrivate*>(data);204 return mp->queryBufferingStats();205 185 } 206 186 … … 308 288 , m_playbackRate(1) 309 289 , m_errorOccured(false) 310 , m_volumeIdleId(0)311 290 , m_mediaDuration(0) 312 , m_muteIdleId(0)313 291 , m_startedBuffering(false) 314 , m_fillTime outId(0)292 , m_fillTimer(this, &MediaPlayerPrivate::fillTimerFired) 315 293 , m_maxTimeLoaded(0) 316 294 , m_bufferingPercentage(0) … … 324 302 MediaPlayerPrivate::~MediaPlayerPrivate() 325 303 { 326 if (m_fillTimeoutId) { 327 g_source_remove(m_fillTimeoutId); 328 m_fillTimeoutId = 0; 329 } 330 331 if (m_volumeIdleId) { 332 g_source_remove(m_volumeIdleId); 333 m_volumeIdleId = 0; 334 } 335 336 if (m_muteIdleId) { 337 g_source_remove(m_muteIdleId); 338 m_muteIdleId = 0; 339 } 304 if (m_fillTimer.isActive()) 305 m_fillTimer.stop(); 340 306 341 307 if (m_buffer) … … 618 584 } 619 585 620 void MediaPlayerPrivate::volumeChanged Callback()586 void MediaPlayerPrivate::volumeChangedTimerFired(Timer<MediaPlayerPrivate>*) 621 587 { 622 588 double volume; … … 627 593 void MediaPlayerPrivate::volumeChanged() 628 594 { 629 if (m_volumeIdleId) 630 g_source_remove(m_volumeIdleId); 631 m_volumeIdleId = g_idle_add((GSourceFunc) notifyVolumeIdleCallback, this); 595 Timer<MediaPlayerPrivate> volumeChangedTimer(this, &MediaPlayerPrivate::volumeChangedTimerFired); 596 volumeChangedTimer.startOneShot(0); 632 597 } 633 598 … … 728 693 m_startedBuffering = true; 729 694 730 if (m_fillTime outId > 0)731 g_source_remove(m_fillTimeoutId);732 733 m_fillTime outId = g_timeout_add(200, (GSourceFunc) bufferingTimeoutCallback, this);734 } 735 } 736 737 bool MediaPlayerPrivate::queryBufferingStats()695 if (m_fillTimer.isActive()) 696 m_fillTimer.stop(); 697 698 m_fillTimer.startRepeating(0.2); 699 } 700 } 701 702 void MediaPlayerPrivate::fillTimerFired(Timer<MediaPlayerPrivate>*) 738 703 { 739 704 GstQuery* query = gst_query_new_buffering(GST_FORMAT_PERCENT); … … 741 706 if (!gst_element_query(m_playBin, query)) { 742 707 gst_query_unref(query); 743 return TRUE;708 return; 744 709 } 745 710 … … 767 732 if (fillStatus != 100.0) { 768 733 updateStates(); 769 return TRUE;734 return; 770 735 } 771 736 … … 773 738 // connection is cut. Buffering is done, remove the fill source 774 739 // from the main loop. 775 m_fillTime outId = 0;740 m_fillTimer.stop(); 776 741 m_startedBuffering = false; 777 742 updateStates(); 778 return FALSE;779 743 } 780 744 … … 798 762 799 763 float loaded = m_maxTimeLoaded; 800 if (!loaded && !m_fillTime outId)764 if (!loaded && !m_fillTimer.isActive()) 801 765 loaded = duration(); 802 766 LOG_VERBOSE(Media, "maxTimeLoaded: %f", loaded); … … 924 888 925 889 // Is on-disk buffering in progress? 926 927 if (m_fillTimeoutId) 890 if (m_fillTimer.isActive()) 928 891 m_networkState = MediaPlayer::Loading; 929 892 … … 1167 1130 } 1168 1131 1169 void MediaPlayerPrivate::muteChanged Callback()1132 void MediaPlayerPrivate::muteChangedTimerFired(Timer<MediaPlayerPrivate>*) 1170 1133 { 1171 1134 gboolean muted; … … 1176 1139 void MediaPlayerPrivate::muteChanged() 1177 1140 { 1178 if (m_muteIdleId) 1179 g_source_remove(m_muteIdleId); 1180 1181 m_muteIdleId = g_idle_add((GSourceFunc) notifyMuteIdleCallback, this); 1141 Timer<MediaPlayerPrivate> muteChangedTimer(this, &MediaPlayerPrivate::muteChangedTimerFired); 1142 muteChangedTimer.startOneShot(0); 1182 1143 } 1183 1144 -
trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
r55995 r55996 83 83 void setVolume(float); 84 84 void volumeChanged(); 85 void volumeChanged Callback();85 void volumeChangedTimerFired(Timer<MediaPlayerPrivate>*); 86 86 87 87 bool supportsMuting() const; 88 88 void setMuted(bool); 89 89 void muteChanged(); 90 void muteChanged Callback();90 void muteChangedTimerFired(Timer<MediaPlayerPrivate>*); 91 91 92 92 void setPreload(MediaPlayer::Preload); 93 bool queryBufferingStats();93 void fillTimerFired(Timer<MediaPlayerPrivate>*); 94 94 95 95 MediaPlayer::NetworkState networkState() const; … … 163 163 float m_playbackRate; 164 164 bool m_errorOccured; 165 guint m_volumeIdleId;166 165 gfloat m_mediaDuration; 167 guint m_muteIdleId;168 166 bool m_startedBuffering; 169 guint m_fillTimeoutId;167 Timer<MediaPlayerPrivate> m_fillTimer; 170 168 float m_maxTimeLoaded; 171 169 int m_bufferingPercentage;
Note: See TracChangeset
for help on using the changeset viewer.