Changeset 55657 in webkit
- Timestamp:
- Mar 8, 2010 12:13:58 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r55654 r55657 1 2010-03-04 Philippe Normand <pnormand@igalia.com> 2 3 Reviewed by Eric Seidel. 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-07 David Levin <levin@chromium.org> 2 25 -
trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r55463 r55657 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_fillStatus(0) … … 322 300 MediaPlayerPrivate::~MediaPlayerPrivate() 323 301 { 324 if (m_fillTimeoutId) { 325 g_source_remove(m_fillTimeoutId); 326 m_fillTimeoutId = 0; 327 } 328 329 if (m_volumeIdleId) { 330 g_source_remove(m_volumeIdleId); 331 m_volumeIdleId = 0; 332 } 333 334 if (m_muteIdleId) { 335 g_source_remove(m_muteIdleId); 336 m_muteIdleId = 0; 337 } 302 if (m_fillTimer.isActive()) 303 m_fillTimer.stop(); 338 304 339 305 if (m_buffer) … … 592 558 } 593 559 594 void MediaPlayerPrivate::volumeChanged Callback()560 void MediaPlayerPrivate::volumeChangedTimerFired(Timer<MediaPlayerPrivate>*) 595 561 { 596 562 double volume; … … 601 567 void MediaPlayerPrivate::volumeChanged() 602 568 { 603 if (m_volumeIdleId) 604 g_source_remove(m_volumeIdleId); 605 m_volumeIdleId = g_idle_add((GSourceFunc) notifyVolumeIdleCallback, this); 569 Timer<MediaPlayerPrivate> volumeChangedTimer(this, &MediaPlayerPrivate::volumeChangedTimerFired); 570 volumeChangedTimer.startOneShot(0); 606 571 } 607 572 … … 689 654 m_startedBuffering = true; 690 655 691 if (m_fillTime outId > 0)692 g_source_remove(m_fillTimeoutId);693 694 m_fillTime outId = g_timeout_add(200, (GSourceFunc) bufferingTimeoutCallback, this);695 } 696 } 697 698 bool MediaPlayerPrivate::queryBufferingStats()656 if (m_fillTimer.isActive()) 657 m_fillTimer.stop(); 658 659 m_fillTimer.startRepeating(0.2); 660 } 661 } 662 663 void MediaPlayerPrivate::fillTimerFired(Timer<MediaPlayerPrivate>*) 699 664 { 700 665 GstQuery* query = gst_query_new_buffering(GST_FORMAT_PERCENT); … … 702 667 if (!gst_element_query(m_playBin, query)) { 703 668 gst_query_unref(query); 704 return TRUE;669 return; 705 670 } 706 671 … … 729 694 if (m_fillStatus != 100.0) { 730 695 updateStates(); 731 return TRUE;696 return; 732 697 } 733 698 … … 735 700 // connection is cut. Buffering is done, remove the fill source 736 701 // from the main loop. 737 m_fillTime outId = 0;702 m_fillTimer.stop(); 738 703 m_startedBuffering = false; 739 704 updateStates(); 740 return FALSE;741 705 } 742 706 … … 760 724 761 725 float loaded = m_maxTimeLoaded; 762 if (!loaded && !m_fillTime outId)726 if (!loaded && !m_fillTimer.isActive()) 763 727 loaded = duration(); 764 728 LOG_VERBOSE(Media, "maxTimeLoaded: %f", loaded); … … 851 815 852 816 // Is on-disk buffering in progress? 853 if (m_fillTime outId) {817 if (m_fillTimer.isActive()) { 854 818 m_networkState = MediaPlayer::Loading; 855 819 // Buffering has just started, we should now have enough … … 1115 1079 } 1116 1080 1117 void MediaPlayerPrivate::muteChanged Callback()1081 void MediaPlayerPrivate::muteChangedTimerFired(Timer<MediaPlayerPrivate>*) 1118 1082 { 1119 1083 gboolean muted; … … 1124 1088 void MediaPlayerPrivate::muteChanged() 1125 1089 { 1126 if (m_muteIdleId) 1127 g_source_remove(m_muteIdleId); 1128 1129 m_muteIdleId = g_idle_add((GSourceFunc) notifyMuteIdleCallback, this); 1090 Timer<MediaPlayerPrivate> muteChangedTimer(this, &MediaPlayerPrivate::muteChangedTimerFired); 1091 muteChangedTimer.startOneShot(0); 1130 1092 } 1131 1093 -
trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
r55463 r55657 81 81 void setVolume(float); 82 82 void volumeChanged(); 83 void volumeChanged Callback();83 void volumeChangedTimerFired(Timer<MediaPlayerPrivate>*); 84 84 85 85 bool supportsMuting() const; 86 86 void setMuted(bool); 87 87 void muteChanged(); 88 void muteChanged Callback();88 void muteChangedTimerFired(Timer<MediaPlayerPrivate>*); 89 89 90 90 void setPreload(MediaPlayer::Preload); 91 bool queryBufferingStats();91 void fillTimerFired(Timer<MediaPlayerPrivate>*); 92 92 93 93 MediaPlayer::NetworkState networkState() const; … … 161 161 float m_playbackRate; 162 162 bool m_errorOccured; 163 guint m_volumeIdleId;164 163 gfloat m_mediaDuration; 165 guint m_muteIdleId;166 164 bool m_startedBuffering; 167 guint m_fillTimeoutId;165 Timer<MediaPlayerPrivate> m_fillTimer; 168 166 float m_maxTimeLoaded; 169 167 gdouble m_fillStatus;
Note: See TracChangeset
for help on using the changeset viewer.