diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index 1a559ed39cbce75fdc699ad40614c449ff64750b..d576638dd7ed4febb52889b417319a589bf138b7 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -50,8 +50,10 @@ set(media_plugin_webkit_LINK_LIBRARIES
 )
 
 # Select which VolumeCatcher implementation to use
-if (LINUX AND PULSEAUDIO)
-  list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp)
+if (LINUX)
+  if (PULSEAUDIO)
+    list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp)
+  endif (PULSEAUDIO)
   list(APPEND media_plugin_webkit_LINK_LIBRARIES
        ${UI_LIBRARIES}     # for glib/GTK
        )
@@ -65,10 +67,10 @@ elseif (DARWIN)
        )
 elseif (WINDOWS)
   list(APPEND media_plugin_webkit_SOURCE_FILES windows_volume_catcher.cpp)
-else (LINUX AND PULSEAUDIO)
+else (LINUX)
   # All other platforms use the dummy volume catcher for now.
   list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp)
-endif (LINUX AND PULSEAUDIO)
+endif (LINUX)
 
 set_source_files_properties(${media_plugin_webkit_HEADER_FILES}
                             PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 69903544860818f6206e28da0f73f11edb798313..a9ff7bf75232070fa451cc592b262237bd63d14c 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -46,6 +46,9 @@
 // set to 1 if you're using the version of llqtwebkit that's QPixmap-ified
 #if LL_LINUX
 # define LL_QTWEBKIT_USES_PIXMAPS 0
+extern "C" {
+# include <glib.h>
+}
 #else
 # define LL_QTWEBKIT_USES_PIXMAPS 0
 #endif // LL_LINUX
@@ -60,7 +63,7 @@
 #endif
 
 #if LL_WINDOWS
-	// *NOTE:Mani - This captures the module handle fo rthe dll. This is used below
+	// *NOTE:Mani - This captures the module handle for the dll. This is used below
 	// to get the path to this dll for webkit initialization.
 	// I don't know how/if this can be done with apr...
 	namespace {	HMODULE gModuleHandle;};
@@ -129,6 +132,16 @@ class MediaPluginWebKit :
 	//
 	void update(int milliseconds)
 	{
+#if LL_LINUX
+		// pump glib generously, as Linux browser plugins are on the
+		// glib main loop, even if the browser itself isn't - ugh
+		//*TODO: shouldn't this be transparent if Qt was compiled with
+		// glib mainloop integration?  investigate.
+		GMainContext *mainc = g_main_context_default();
+		while(g_main_context_iteration(mainc, FALSE));
+#endif // LL_LINUX
+
+		// pump qt
 		LLQtWebKit::getInstance()->pump( milliseconds );
 		
 		mVolumeCatcher.pump();