Changeset 21127 in vbox
- Timestamp:
- Jul 1, 2009 2:25:14 PM (15 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 5 edited
-
Additions/common/crOpenGL/pack/packspu_context.c (modified) (4 diffs)
-
Additions/common/crOpenGL/pack/packspu_misc.c (modified) (2 diffs)
-
HostServices/SharedOpenGL/crserverlib/server_context.c (modified) (1 diff)
-
HostServices/SharedOpenGL/crserverlib/server_stream.c (modified) (3 diffs)
-
HostServices/SharedOpenGL/crserverlib/server_window.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_context.c
r15758 r21127 82 82 packspu_CreateContext( const char *dpyName, GLint visual, GLint shareCtx ) 83 83 { 84 GET_THREAD(thread); 84 85 int writeback = 1; 85 86 GLint serverCtx = (GLint) -1; … … 89 90 crLockMutex(&_PackMutex); 90 91 #endif 92 93 if (!thread) { 94 thread = packspuNewThread(crThreadID()); 95 } 96 CRASSERT(thread); 97 CRASSERT(thread->packer); 91 98 92 99 if (shareCtx > 0) { … … 98 105 } 99 106 100 crPackSetContext( pack_spu.thread[0].packer );107 crPackSetContext( thread->packer ); 101 108 102 109 /* Pack the command */ … … 107 114 108 115 /* Flush buffer and get return value */ 109 packspuFlush( &(pack_spu.thread[0]));110 if (!( pack_spu.thread[0].netServer.conn->actual_network))116 packspuFlush(thread); 117 if (!(thread->netServer.conn->actual_network)) 111 118 { 112 119 /* HUMUNGOUS HACK TO MATCH SERVER NUMBERING -
trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
r20148 r21127 112 112 GLint PACKSPU_APIENTRY packspu_WindowCreate( const char *dpyName, GLint visBits ) 113 113 { 114 GET_THREAD(thread); 114 115 static int num_calls = 0; 115 116 int writeback = pack_spu.thread[0].netServer.conn->actual_network; 116 117 GLint return_val = (GLint) 0; 117 118 118 /* WindowCreate is special - just like CreateContext.119 * GET_THREAD(thread) doesn't work as the thread won't have called120 * MakeCurrent yet, so we've got to use the first thread's packer121 * buffer.122 */123 124 crPackSetContext( pack_spu.thread[0].packer);119 if (!thread) { 120 thread = packspuNewThread( crThreadID() ); 121 } 122 CRASSERT(thread); 123 CRASSERT(thread->packer); 124 125 crPackSetContext(thread->packer); 125 126 126 127 if (pack_spu.swap) … … 132 133 crPackWindowCreate( dpyName, visBits, &return_val, &writeback ); 133 134 } 134 packspuFlush( &pack_spu.thread[0]);135 if (!( pack_spu.thread[0].netServer.conn->actual_network))135 packspuFlush(thread); 136 if (!(thread->netServer.conn->actual_network)) 136 137 { 137 138 return num_calls++; -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c
r15532 r21127 140 140 for (pos = 0; pos < CR_MAX_CONTEXTS; ++pos) 141 141 if (cr_server.curClient->contextList[pos] == ctx) 142 { 142 143 cr_server.curClient->contextList[pos] = 0; 144 break; 145 } 146 CRASSERT(pos<CR_MAX_CONTEXTS); 143 147 } 144 148 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_stream.c
r17964 r21127 116 116 int i, j; 117 117 int32_t pos; 118 119 crDebug("Deleting client %p (%d msgs left)", client, 120 crNetNumMessages(client->conn));118 CRClient *oldclient = cr_server.curClient; 119 120 crDebug("Deleting client %p (%d msgs left)", client, crNetNumMessages(client->conn)); 121 121 122 122 #if 0 … … 142 142 } 143 143 } 144 145 cr_server.curClient = client; 146 147 /* Destroy any windows created by the client */ 148 for (pos = 0; pos<CR_MAX_WINDOWS && client->windowList[pos]; pos++) 149 { 150 cr_server.dispatch.WindowDestroy(client->windowList[pos]); 151 } 152 153 /* Check if we have context(s) made by this client left, could happen if client side code is lazy */ 154 for (pos = 0; pos<CR_MAX_CONTEXTS && client->contextList[pos]; pos++) 155 { 156 cr_server.dispatch.DestroyContext(client->contextList[pos]); 157 } 158 159 cr_server.curClient = oldclient; 144 160 145 161 /* remove from the run queue */ … … 179 195 180 196 crNetFreeConnection(client->conn); 181 182 /* Destroy any windows created by the client */183 for (pos = 0; pos<CR_MAX_WINDOWS && client->windowList[pos]; pos++)184 {185 cr_server.dispatch.WindowDestroy(client->windowList[pos]);186 }187 188 /* Check if we have context(s) made by this client left, could happen if client side code is lazy */189 for (pos = 0; pos<CR_MAX_CONTEXTS && client->contextList[pos]; pos++)190 {191 cr_server.dispatch.DestroyContext(client->contextList[pos]);192 }193 197 194 198 crFree(client); -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
r15532 r21127 119 119 } 120 120 121 122 #define EXTRA_WARN 0 121 void crServerCheckCurrentCtxWindowCB(unsigned long key, void *data1, void *data2) 122 { 123 CRContext *crCtx = (CRContext *) data1; 124 GLint window = *(GLint*)data2; 125 126 (void) key; 127 } 123 128 124 129 void SERVER_DISPATCH_APIENTRY … … 130 135 mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window); 131 136 if (!mural) { 132 #if EXTRA_WARN133 137 crWarning("CRServer: invalid window %d passed to WindowDestroy()", window); 134 #endif135 138 return; 136 139 } … … 143 146 for (pos = 0; pos < CR_MAX_WINDOWS; ++pos) 144 147 if (cr_server.curClient->windowList[pos] == window) 148 { 145 149 cr_server.curClient->windowList[pos] = 0; 150 break; 151 } 152 CRASSERT(pos<CR_MAX_WINDOWS); 146 153 147 154 if (cr_server.curClient->currentMural == mural) … … 152 159 } 153 160 161 if (cr_server.currentWindow = window) 162 { 163 cr_server.currentWindow = -1; 164 } 165 166 crHashtableWalk(cr_server.contextTable, crServerCheckCurrentCtxWindowCB, &window); 154 167 crHashtableDelete(cr_server.pWindowCreateInfoTable, window, crServerCreateInfoDeleteCB); 155 /* @todo, can't issue it cause we could have context(s) referencing this one left */ 156 /*crHashtableDelete(cr_server.muralTable, window, crFree);*/ 168 crHashtableDelete(cr_server.muralTable, window, crFree); 157 169 } 158 170
Note:
See TracChangeset
for help on using the changeset viewer.

