shell: Implement "driver" method of fullsceen.
Switching display mode may happen when:
1. The fullscreen surface is at top most in fullscreen layer and with
"driver" method. Shell will switch output mode to match the surface
size. If no matched mode found, fall back to "fill" method.
2. The top fullscreen surface is destroyed or unset. Switch back to the
origin mode.
diff --git a/src/compositor.h b/src/compositor.h
index f21f769..a4f5209 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -92,6 +92,7 @@
uint32_t subpixel;
struct weston_mode *current;
+ struct weston_mode *origin;
struct wl_list mode_list;
void (*repaint)(struct weston_output *output,