Changeset 50313 in vbox for trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
- Timestamp:
- Feb 3, 2014 6:46:27 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 92022
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r50251 r50313 43 43 PVBOXHGCMSVCHELPERS g_pHelpers; 44 44 static IConsole* g_pConsole = NULL; 45 static uint32_t g_u32ScreenCount = 0; 45 46 static PVM g_pVM = NULL; 46 47 … … 1025 1026 1026 1027 g_pConsole = pConsole; 1028 g_u32ScreenCount = monitorCount; 1027 1029 1028 1030 rc = crVBoxServerSetScreenCount(monitorCount); … … 1183 1185 1184 1186 rc = VINF_SUCCESS; 1187 } 1188 break; 1189 } 1190 case SHCRGL_HOST_FN_TAKE_SCREENSHOT: 1191 { 1192 if (cParms != 1) 1193 { 1194 LogRel(("SHCRGL_HOST_FN_TAKE_SCREENSHOT: cParms invalid - %d", cParms)); 1195 rc = VERR_INVALID_PARAMETER; 1196 break; 1197 } 1198 1199 if (paParms->type != VBOX_HGCM_SVC_PARM_PTR) 1200 { 1201 AssertMsgFailed(("invalid param\n")); 1202 rc = VERR_INVALID_PARAMETER; 1203 break; 1204 } 1205 1206 if (!paParms->u.pointer.addr) 1207 { 1208 AssertMsgFailed(("invalid param\n")); 1209 rc = VERR_INVALID_PARAMETER; 1210 break; 1211 } 1212 1213 if (paParms->u.pointer.size != sizeof (CRVBOXHGCMTAKESCREENSHOT)) 1214 { 1215 AssertMsgFailed(("invalid param\n")); 1216 rc = VERR_INVALID_PARAMETER; 1217 break; 1218 } 1219 1220 CRVBOXHGCMTAKESCREENSHOT *pScreenshot = (CRVBOXHGCMTAKESCREENSHOT*)paParms->u.pointer.addr; 1221 uint64_t u64Now = RTTimeProgramMilliTS(); 1222 1223 if (pScreenshot->u32Screen == CRSCREEN_ALL) 1224 { 1225 for (uint32_t i = 0; i < g_u32ScreenCount; ++i) 1226 { 1227 CR_SCREENSHOT Screenshot; 1228 1229 int rc = crServerVBoxScreenshotGet(i, &Screenshot); 1230 if (RT_SUCCESS(rc)) 1231 { 1232 pScreenshot->pfnScreenshot(pScreenshot->pvContext, i, 1233 0, 0, 32, 1234 Screenshot.Img.pitch, Screenshot.Img.width, Screenshot.Img.height, 1235 (uint8_t*)Screenshot.Img.pvData, u64Now); 1236 crServerVBoxScreenshotRelease(&Screenshot); 1237 } 1238 else 1239 { 1240 Assert(rc == VERR_INVALID_STATE); 1241 } 1242 } 1243 } 1244 else if (pScreenshot->u32Screen < g_u32ScreenCount) 1245 { 1246 CR_SCREENSHOT Screenshot; 1247 1248 int rc = crServerVBoxScreenshotGet(pScreenshot->u32Screen, &Screenshot); 1249 if (RT_SUCCESS(rc)) 1250 { 1251 pScreenshot->pfnScreenshot(pScreenshot->pvContext, pScreenshot->u32Screen, 1252 0, 0, 32, 1253 Screenshot.Img.pitch, Screenshot.Img.width, Screenshot.Img.height, 1254 (uint8_t*)Screenshot.Img.pvData, u64Now); 1255 crServerVBoxScreenshotRelease(&Screenshot); 1256 } 1257 else 1258 { 1259 Assert(rc == VERR_INVALID_STATE); 1260 } 1261 } 1262 else 1263 { 1264 AssertMsgFailed(("invalid screen id\n")); 1265 rc = VERR_INVALID_PARAMETER; 1266 break; 1185 1267 } 1186 1268 break;
Note:
See TracChangeset
for help on using the changeset viewer.