=== modified file 'examples/eglapp.c'
--- examples/eglapp.c	2013-07-26 05:12:14 +0000
+++ examples/eglapp.c	2013-08-01 07:13:28 +0000
@@ -114,6 +114,29 @@
     }
 }
 
+static const MirDisplayOutput *find_active_output(
+    const MirDisplayConfiguration *conf)
+{
+    const MirDisplayOutput *output = NULL;
+    int d;
+
+    for (d = 0; d < (int)conf->num_displays; d++)
+    {
+        const MirDisplayOutput *out = conf->displays + d;
+
+        if (out->used &&
+            out->connected &&
+            out->num_modes &&
+            out->current_mode < out->num_modes)
+        {
+            output = out;
+            break;
+        }
+    }
+
+    return output;
+}
+
 mir_eglapp_bool mir_eglapp_init(int argc, char *argv[],
                                 unsigned int *width, unsigned int *height)
 {
@@ -180,20 +203,33 @@
     connection = mir_connect_sync(NULL, appname);
     CHECK(mir_connection_is_valid(connection), "Can't get connection");
 
-    /* eglapps are interested in the screen size, so use mir_connection_create_display_config */
-    MirDisplayConfiguration* display_config = mir_connection_create_display_config(connection);
-    MirDisplayOutput* display_state = &display_config->displays[0];
-    MirDisplayMode mode = display_state->modes[display_state->current_mode]; 
+    /* eglapps are interested in the screen size, so
+       use mir_connection_create_display_config */
+    MirDisplayConfiguration* display_config =
+        mir_connection_create_display_config(connection);
+
+    const MirDisplayOutput *output = find_active_output(display_config);
+
+    if (output == NULL)
+    {
+        printf("No active outputs found.\n");
+        return 0;
+    }
+
+    const MirDisplayMode *mode = &output->modes[0];
+
     unsigned int valid_formats;
-    mir_connection_get_available_surface_formats(connection, &surfaceparm.pixel_format, 1, &valid_formats);
-
-    printf("Connected to display: resolution (%dx%d), position(%dx%d), supports %d pixel formats\n",
-           mode.horizontal_resolution, mode.vertical_resolution,
-           display_state->position_x, display_state->position_y,
-           display_state->num_output_formats);
-
-    surfaceparm.width = *width > 0 ? *width : mode.horizontal_resolution;
-    surfaceparm.height = *height > 0 ? *height : mode.vertical_resolution;
+    mir_connection_get_available_surface_formats(connection,
+        &surfaceparm.pixel_format, 1, &valid_formats);
+
+    printf("Connected to display: resolution (%dx%d), position(%dx%d), "
+           "supports %d pixel formats\n",
+           mode->horizontal_resolution, mode->vertical_resolution,
+           output->position_x, output->position_y,
+           output->num_output_formats);
+
+    surfaceparm.width = *width > 0 ? *width : mode->horizontal_resolution;
+    surfaceparm.height = *height > 0 ? *height : mode->vertical_resolution;
 
     mir_display_config_destroy(display_config);
 

=== modified file 'examples/fingerpaint.c'
--- examples/fingerpaint.c	2013-07-26 05:12:14 +0000
+++ examples/fingerpaint.c	2013-08-01 07:13:28 +0000
@@ -248,6 +248,29 @@
     }
 }
 
+static const MirDisplayOutput *find_active_output(
+    const MirDisplayConfiguration *conf)
+{
+    const MirDisplayOutput *output = NULL;
+    int d;
+
+    for (d = 0; d < (int)conf->num_displays; d++)
+    {
+        const MirDisplayOutput *out = conf->displays + d;
+
+        if (out->used &&
+            out->connected &&
+            out->num_modes &&
+            out->current_mode < out->num_modes)
+        {
+            output = out;
+            break;
+        }
+    }
+
+    return output;
+}
+
 int main(int argc, char *argv[])
 {
     static const Color background = {0x40, 0x40, 0x40, 0xff};
@@ -267,8 +290,16 @@
         return 1;
     }
 
-    MirDisplayConfiguration* display_config = mir_connection_create_display_config(conn);
-    MirDisplayOutput* dinfo = &display_config->displays[0];
+    MirDisplayConfiguration *display_config =
+        mir_connection_create_display_config(conn);
+
+    const MirDisplayOutput *dinfo = find_active_output(display_config);
+    if (dinfo == NULL)
+    {
+        fprintf(stderr, "No active outputs found.\n");
+        mir_connection_release(conn);
+        return 1;
+    }
 
     parm.buffer_usage = mir_buffer_usage_software;
 

