Removed glfwIsWindow.
diff --git a/examples/boing.c b/examples/boing.c
index 49d602c..d3b3417 100644
--- a/examples/boing.c
+++ b/examples/boing.c
@@ -43,6 +43,7 @@
 void init( void );
 void display( void );
 void reshape( GLFWwindow window, int w, int h );
+int window_close_callback(GLFWwindow window);
 void DrawBoingBall( void );
 void BounceBall( double dt );
 void DrawBoingBallBand( GLfloat long_lo, GLfloat long_hi );
@@ -89,6 +90,7 @@
 double  t;
 double  t_old = 0.f;
 double  dt;
+static GLboolean running = GL_TRUE;
 
 /* Random number generator */
 #ifndef RAND_MAX
@@ -246,6 +248,16 @@
 
 
 /*****************************************************************************
+ * Window close callback
+ *****************************************************************************/
+int window_close_callback(GLFWwindow window)
+{
+    running = GL_FALSE;
+    return GL_TRUE;
+}
+
+
+/*****************************************************************************
  * Draw the Boing ball.
  *
  * The Boing ball is sphere in which each facet is a rectangle.
@@ -567,7 +579,6 @@
 
 int main( void )
 {
-   int running;
    GLFWwindow window;
 
    /* Init GLFW */
@@ -587,6 +598,7 @@
        exit( EXIT_FAILURE );
    }
 
+   glfwSetWindowCloseCallback( window_close_callback );
    glfwSetWindowSizeCallback( reshape );
    glfwSetInputMode( window, GLFW_STICKY_KEYS, GL_TRUE );
    glfwSwapInterval( 1 );
@@ -610,7 +622,8 @@
        glfwPollEvents();
 
        /* Check if we are still running */
-       running = glfwIsWindow(window) && !glfwGetKey( window, GLFW_KEY_ESCAPE );
+       if (glfwGetKey( window, GLFW_KEY_ESCAPE ))
+           running = GL_FALSE;
    }
    while( running );