In GLUT there is a glutPostRedisplay() function that will redraw the screen for you. I'm not sure that this will pump any user inputs (as it would in GLFW), but it may. When you get a new caputure frame, update your PBO and then then call the postRedisplay() function to ask GLUT to redraw the screen.
GLUT and FreeGLUT are pretty old. I recommend GLFW as well (full disclosure: I've contributed to it in the past). It's a great windowing framework and gives you the primitives to build your own loop around.