\subsection{SurfaceFlinger}
\begin{frame}
  \frametitle{Introduction to graphical stacks}
  \begin{center}
    \includegraphics[height=0.8\textheight]{slides/android-native-layer-flingers/wm-architecture.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Compositing window managers}
  \begin{center}
    \includegraphics[height=0.8\textheight]{slides/android-native-layer-flingers/cwm-architecture.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{SurfaceFlinger}
  \begin{itemize}
  \item This difference in design adds some interesting features:
    \begin{itemize}
    \item Effects are easy to implement, as it's up to the window
      manager to mangle the various surfaces at will to display them
      on the screen. Thus, you can add transparency, 3d effects, etc.
    \item Improved stability. With a regular window manager, a message
      is sent to every window to redraw its part of the screen, for
      example when a window has been moved. But if an application
      fails to redraw, the windows will become glitchy. This will not
      happen with a compositing WM, as it will still display the
      untouched surface.
    \end{itemize}
  \item SurfaceFlinger is the compositing window manager in Android,
    providing surfaces to applications and rendering all of them with
    hardware acceleration.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{SurfaceFlinger}
  \begin{center}
    \includegraphics[height=0.8\textheight]{slides/android-native-layer-flingers/surfaceflinger-architecture.pdf}
  \end{center}
\end{frame}
