Example #1
0
/*static*/void
gfxPlatform::InitOffMainThreadCompositing()
{
  static bool inited;
  if (inited) {
    return;
  }
  inited = true;

  bool useOffMainThreadCompositing = false;
#ifdef MOZ_X11
  // On X11 platforms only use OMTC if firefox was initalized with thread-safe 
  // X11 (else it would crash).
  useOffMainThreadCompositing = (PR_GetEnv("MOZ_USE_OMTC") != NULL);
#else
  useOffMainThreadCompositing = Preferences::GetBool(
    "layers.offmainthreadcomposition.enabled", 
    false);
#endif

  printf_stderr("Are we using off-main-thread compositing? %s\n",
                useOffMainThreadCompositing ? "yes" : "NO");

  if (useOffMainThreadCompositing) {
    CompositorParent::CreateCompositorMap();
    CompositorParent::CreateThread();

    ImageBridgeChild::Create(new base::Thread("ImageBridgeChild"));
    ImageBridgeChild* imageBridgeChild = ImageBridgeChild::GetSingleton();
    ImageBridgeParent* imageBridgeParent = new ImageBridgeParent(
      CompositorParent::CompositorLoop());
    imageBridgeChild->ConnectAsync(imageBridgeParent);
  }
}