The R Project SVN R

Rev

Rev 31601 | Rev 32364 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31601 Rev 31938
Line 1304... Line 1304...
1304
/*  .External.gr  and  .Call.gr */
1304
/*  .External.gr  and  .Call.gr */
1305
 
1305
 
1306
SEXP do_Externalgr(SEXP call, SEXP op, SEXP args, SEXP env)
1306
SEXP do_Externalgr(SEXP call, SEXP op, SEXP args, SEXP env)
1307
{
1307
{
1308
    SEXP retval;
1308
    SEXP retval;
-
 
1309
    GEDevDesc *dd = GEcurrentDevice();
-
 
1310
    Rboolean record = dd->recordGraphics;
-
 
1311
    dd->recordGraphics = FALSE;
1309
    PROTECT(retval = do_External(call, op, args, env));
1312
    PROTECT(retval = do_External(call, op, args, env));
-
 
1313
    /*
-
 
1314
     * If there is an error or user-interrupt in the above
-
 
1315
     * evaluation, dd->recordGraphics is set to TRUE 
-
 
1316
     * on all graphics devices (see GEonExit(); called in errors.c)
-
 
1317
     */
1310
    if (call != R_NilValue) {
1318
    dd->recordGraphics = record;
1311
        GEDevDesc *dd = GEcurrentDevice();
1319
    if (GErecording(call, dd)) {
1312
	if (!GEcheckState(dd))
1320
	if (!GEcheckState(dd))
1313
	    error("Invalid graphics state");
1321
	    error("Invalid graphics state");
1314
	GErecordGraphicOperation(op, args, dd);
1322
	GErecordGraphicOperation(op, args, dd);
1315
    }
1323
    }
1316
    UNPROTECT(1);
1324
    UNPROTECT(1);
Line 1318... Line 1326...
1318
}
1326
}
1319
 
1327
 
1320
SEXP do_dotcallgr(SEXP call, SEXP op, SEXP args, SEXP env)
1328
SEXP do_dotcallgr(SEXP call, SEXP op, SEXP args, SEXP env)
1321
{
1329
{
1322
    SEXP retval;
1330
    SEXP retval;
-
 
1331
    GEDevDesc *dd = GEcurrentDevice();
-
 
1332
    Rboolean record = dd->recordGraphics;
-
 
1333
    dd->recordGraphics = FALSE;
1323
    PROTECT(retval = do_dotcall(call, op, args, env));
1334
    PROTECT(retval = do_dotcall(call, op, args, env));
-
 
1335
    /*
-
 
1336
     * If there is an error or user-interrupt in the above
-
 
1337
     * evaluation, dd->recordGraphics is set to TRUE 
-
 
1338
     * on all graphics devices (see GEonExit(); called in errors.c)
-
 
1339
     */
1324
    if (call != R_NilValue) {
1340
    dd->recordGraphics = record;
1325
        GEDevDesc *dd = GEcurrentDevice();
1341
    if (GErecording(call, dd)) {
1326
	if (!GEcheckState(dd))
1342
	if (!GEcheckState(dd))
1327
	    error("Invalid graphics state");
1343
	    error("Invalid graphics state");
1328
	GErecordGraphicOperation(op, args, dd);
1344
	GErecordGraphicOperation(op, args, dd);
1329
    }
1345
    }
1330
    UNPROTECT(1);
1346
    UNPROTECT(1);
1331
    return retval;
1347
    return retval;
1332
}
1348
}
1333
 
1349
 
1334
 
-
 
1335
 
-
 
1336
static SEXP
1350
static SEXP
1337
Rf_getCallingDLL()
1351
Rf_getCallingDLL()
1338
{
1352
{
1339
    SEXP e, ans;
1353
    SEXP e, ans;
1340
    PROTECT(e = allocVector(LANGSXP, 1));
1354
    PROTECT(e = allocVector(LANGSXP, 1));