Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c	(revision 55013)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c	(revision 55014)
@@ -166,2 +166,69 @@
 }
 #endif /* #ifdef CR_OPENGL_VERSION_2_0 */
+
+/* XXXX Note: shared/separate Program ID numbers aren't totally implemented! */
+GLuint crServerTranslateProgramID( GLuint id )
+{
+    if (!cr_server.sharedPrograms && id) {
+        int client = cr_server.curClient->number;
+        return id + client * 100000;
+    }
+    return id;
+}
+
+
+void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteProgramsARB(GLsizei n, const GLuint * programs)
+{
+    GLuint *pLocalProgs = (GLuint *) crAlloc(n * sizeof(GLuint));
+    GLint i;
+    if (!pLocalProgs) {
+        crError("crServerDispatchDeleteProgramsARB: out of memory");
+        return;
+    }
+    for (i = 0; i < n; i++) {
+        pLocalProgs[i] = crServerTranslateProgramID(programs[i]);
+    }
+    crStateDeleteProgramsARB(n, pLocalProgs);
+    cr_server.head_spu->dispatch_table.DeleteProgramsARB(n, pLocalProgs);
+    crFree(pLocalProgs);
+}
+
+
+/*@todo will fail for progs loaded from snapshot */
+GLboolean SERVER_DISPATCH_APIENTRY crServerDispatchIsProgramARB( GLuint program )
+{
+    GLboolean retval;
+    program = crServerTranslateProgramID(program);
+    retval = cr_server.head_spu->dispatch_table.IsProgramARB( program );
+    crServerReturnValue( &retval, sizeof(retval) );
+    return retval; /* WILL PROBABLY BE IGNORED */
+}
+
+
+GLboolean SERVER_DISPATCH_APIENTRY
+crServerDispatchAreProgramsResidentNV(GLsizei n, const GLuint *programs,
+                                                                            GLboolean *residences)
+{
+    GLboolean retval;
+    GLboolean *res = (GLboolean *) crAlloc(n * sizeof(GLboolean));
+    GLsizei i;
+
+    (void) residences;
+
+    if (!cr_server.sharedTextureObjects) {
+        GLuint *programs2 = (GLuint *) crAlloc(n * sizeof(GLuint));
+        for (i = 0; i < n; i++)
+            programs2[i] = crServerTranslateProgramID(programs[i]);
+        retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs2, res);
+        crFree(programs2);
+    }
+    else {
+        retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs, res);
+    }
+
+    crServerReturnValue(res, n * sizeof(GLboolean));
+    crFree(res);
+
+    return retval; /* WILL PROBABLY BE IGNORED */
+}
+
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_lists.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_lists.c	(revision 55013)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_lists.c	(revision 55014)
@@ -47,13 +47,4 @@
 }
 
-/* XXXX Note: shared/separate Program ID numbers aren't totally implemented! */
-GLuint crServerTranslateProgramID( GLuint id )
-{
-    if (!cr_server.sharedPrograms && id) {
-        int client = cr_server.curClient->number;
-        return id + client * 100000;
-    }
-    return id;
-}
 
 GLuint SERVER_DISPATCH_APIENTRY crServerDispatchGenLists( GLsizei range )
@@ -279,57 +270,2 @@
     cr_server.head_spu->dispatch_table.DeleteLists( list, range );
 }
-
-
-void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteProgramsARB(GLsizei n, const GLuint * programs)
-{
-    GLuint *pLocalProgs = (GLuint *) crAlloc(n * sizeof(GLuint));
-    GLint i;
-    if (!pLocalProgs) {
-        crError("crServerDispatchDeleteProgramsARB: out of memory");
-        return;
-    }
-    for (i = 0; i < n; i++) {
-        pLocalProgs[i] = crServerTranslateProgramID(programs[i]);
-    }
-    crStateDeleteProgramsARB(n, pLocalProgs);
-    cr_server.head_spu->dispatch_table.DeleteProgramsARB(n, pLocalProgs);
-    crFree(pLocalProgs);
-}
-
-/*@todo will fail for progs loaded from snapshot */
-GLboolean SERVER_DISPATCH_APIENTRY crServerDispatchIsProgramARB( GLuint program )
-{
-    GLboolean retval;
-    program = crServerTranslateProgramID(program);
-    retval = cr_server.head_spu->dispatch_table.IsProgramARB( program );
-    crServerReturnValue( &retval, sizeof(retval) );
-    return retval; /* WILL PROBABLY BE IGNORED */
-}
-
-
-GLboolean SERVER_DISPATCH_APIENTRY
-crServerDispatchAreProgramsResidentNV(GLsizei n, const GLuint *programs,
-                                                                            GLboolean *residences)
-{
-    GLboolean retval;
-    GLboolean *res = (GLboolean *) crAlloc(n * sizeof(GLboolean));
-    GLsizei i;
-
-    (void) residences;
-
-    if (!cr_server.sharedTextureObjects) {
-        GLuint *programs2 = (GLuint *) crAlloc(n * sizeof(GLuint));
-        for (i = 0; i < n; i++)
-            programs2[i] = crServerTranslateProgramID(programs[i]);
-        retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs2, res);
-        crFree(programs2);
-    }
-    else {
-        retval = cr_server.head_spu->dispatch_table.AreProgramsResidentNV(n, programs, res);
-    }
-
-    crServerReturnValue(res, n * sizeof(GLboolean));
-    crFree(res);
-
-    return retval; /* WILL PROBABLY BE IGNORED */
-}
