Begun integrating mode setting and monitor API.
diff --git a/src/cocoa_monitor.m b/src/cocoa_monitor.m
index fb41d85..759b3c6 100644
--- a/src/cocoa_monitor.m
+++ b/src/cocoa_monitor.m
@@ -139,7 +139,7 @@
 // Change the current video mode
 //========================================================================
 
-GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp)
+GLboolean _glfwSetVideoMode(_GLFWmonitor* monitor, int* width, int* height, int* bpp)
 {
     CGDisplayModeRef bestMode = NULL;
     CFArrayRef modes;
@@ -190,7 +190,7 @@
         return GL_FALSE;
     }
 
-    _glfw.ns.previousMode = CGDisplayCopyDisplayMode(CGMainDisplayID());
+    monitor->ns.previousMode = CGDisplayCopyDisplayMode(CGMainDisplayID());
 
     CGDisplayCapture(CGMainDisplayID());
     CGDisplaySetDisplayMode(CGMainDisplayID(), bestMode, NULL);
@@ -204,9 +204,9 @@
 // Restore the previously saved (original) video mode
 //========================================================================
 
-void _glfwRestoreVideoMode(void)
+void _glfwRestoreVideoMode(_GLFWmonitor* monitor)
 {
-    CGDisplaySetDisplayMode(CGMainDisplayID(), _glfw.ns.previousMode, NULL);
+    CGDisplaySetDisplayMode(CGMainDisplayID(), monitor->ns.previousMode, NULL);
     CGDisplayRelease(CGMainDisplayID());
 }
 
@@ -236,6 +236,8 @@
         return NULL;
     }
 
+    CGGetActiveDisplayList(monitorCount, displays, &monitorCount);
+
     monitors = (_GLFWmonitor**) calloc(monitorCount, sizeof(_GLFWmonitor*));
     if (!monitors)
     {