script: Port cairo_script_context_t to cairo_device_t

Use the unifying cairo_device_t for cairo_script_context_t and replace.
This commit is contained in:
Chris Wilson 2010-01-18 22:43:24 +00:00
parent f617d5fc98
commit 49ab86772a
10 changed files with 312 additions and 283 deletions

View file

@ -48,7 +48,7 @@ _cairo_boilerplate_script_create_surface (const char *name,
void **closure)
{
script_target_closure_t *ptc;
cairo_script_context_t *ctx;
cairo_device_t *ctx;
cairo_surface_t *surface;
cairo_status_t status;
@ -60,9 +60,9 @@ _cairo_boilerplate_script_create_surface (const char *name,
xasprintf (&ptc->filename, "%s.out.cs", name);
xunlink (ptc->filename);
ctx = cairo_script_context_create (ptc->filename);
ctx = cairo_script_create (ptc->filename);
surface = cairo_script_surface_create (ctx, content, width, height);
cairo_script_context_destroy (ctx);
cairo_device_destroy (ctx);
status = cairo_surface_set_user_data (surface,
&script_closure_key, ptc, NULL);

View file

@ -203,13 +203,13 @@ _cairo_boilerplate_get_image_surface (cairo_surface_t *src,
test_name = cairo_surface_get_user_data (src,
&cairo_boilerplate_output_basename_key);
if (test_name != NULL) {
cairo_script_context_t *ctx;
cairo_device_t *ctx;
char *filename;
xasprintf (&filename, "%s.out.trace", test_name);
ctx = cairo_script_context_create (filename);
ctx = cairo_script_create (filename);
surface = cairo_script_surface_create_for_target (ctx, image);
cairo_script_context_destroy (ctx);
cairo_device_destroy (ctx);
free (filename);
}
}

File diff suppressed because it is too large Load diff

View file

@ -42,48 +42,43 @@
CAIRO_BEGIN_DECLS
typedef struct _cairo_script_context cairo_script_context_t;
typedef enum {
CAIRO_SCRIPT_MODE_BINARY,
CAIRO_SCRIPT_MODE_ASCII
} cairo_script_mode_t;
cairo_public cairo_script_context_t *
cairo_script_context_create (const char *filename);
cairo_public cairo_device_t *
cairo_script_create (const char *filename);
cairo_public cairo_script_context_t *
cairo_script_context_create_for_stream (cairo_write_func_t write_func,
void *closure);
cairo_public cairo_device_t *
cairo_script_create_for_stream (cairo_write_func_t write_func,
void *closure);
cairo_public void
cairo_script_context_write_comment (cairo_script_context_t *context,
const char *comment,
int len);
cairo_script_write_comment (cairo_device_t *script,
const char *comment,
int len);
cairo_public void
cairo_script_context_set_mode (cairo_script_context_t *context,
cairo_script_mode_t mode);
cairo_script_set_mode (cairo_device_t *script,
cairo_script_mode_t mode);
cairo_public cairo_script_mode_t
cairo_script_context_get_mode (cairo_script_context_t *context);
cairo_public void
cairo_script_context_destroy (cairo_script_context_t *context);
cairo_script_get_mode (cairo_device_t *script);
cairo_public cairo_surface_t *
cairo_script_surface_create (cairo_script_context_t *context,
cairo_script_surface_create (cairo_device_t *script,
cairo_content_t content,
double width,
double height);
cairo_public cairo_surface_t *
cairo_script_surface_create_for_target (cairo_script_context_t *context,
cairo_script_surface_create_for_target (cairo_device_t *script,
cairo_surface_t *target);
cairo_public cairo_status_t
cairo_script_from_recording_surface (cairo_script_context_t *context,
cairo_surface_t *recording_surface);
cairo_script_from_recording_surface (cairo_device_t *script,
cairo_surface_t *recording_surface);
CAIRO_END_DECLS

View file

@ -864,17 +864,18 @@ static void
write_trace (const char *trace, struct slave *slave)
{
#if CAIRO_HAS_SCRIPT_SURFACE
cairo_script_context_t *ctx;
cairo_device_t *ctx,
cairo_surface_t *script;
char *filename;
cairo_t *cr;
xasprintf (&filename, "%s-fail.trace", trace);
ctx = cairo_script_context_create (filename);
ctx = cairo_script_create (filename);
script = cairo_script_surface_create (ctx,
cairo_surface_get_content (slave->image),
slave->width,
slave->height);
cairo_script_context_destroy (ctx);
cairo_device_destroy (ctx);
free (filename);
cr = cairo_create (slave->image);

View file

@ -52,10 +52,10 @@ static int fdr_dump;
static const cairo_user_data_key_t fdr_key;
static void
fdr_replay_to_script (cairo_surface_t *recording, cairo_script_context_t *ctx)
fdr_replay_to_script (cairo_surface_t *recording, cairo_device_t *ctx)
{
if (recording != NULL) {
DLCALL (cairo_script_context_write_comment, ctx, "--- fdr ---", -1);
DLCALL (cairo_script_write_comment, ctx, "--- fdr ---", -1);
DLCALL (cairo_script_from_recording_surface, ctx, recording);
}
}
@ -63,10 +63,10 @@ fdr_replay_to_script (cairo_surface_t *recording, cairo_script_context_t *ctx)
static void
fdr_dump_ringbuffer (void)
{
cairo_script_context_t *ctx;
cairo_device_t *ctx;
int n;
ctx = DLCALL (cairo_script_context_create, "/tmp/fdr.trace");
ctx = DLCALL (cairo_script_create, "/tmp/fdr.trace");
for (n = fdr_position; n < RINGBUFFER_SIZE; n++)
fdr_replay_to_script (fdr_ringbuffer[n], ctx);
@ -74,7 +74,7 @@ fdr_dump_ringbuffer (void)
for (n = 0; n < fdr_position; n++)
fdr_replay_to_script (fdr_ringbuffer[n], ctx);
DLCALL (cairo_script_context_destroy, ctx);
DLCALL (cairo_device_destroy, ctx);
}
static void

View file

@ -8,9 +8,10 @@
static cairo_surface_t *
_script_surface_create (void *closure,
cairo_content_t content,
double width, double height)
double width, double height,
long uid)
{
return cairo_script_surface_create (closure, width, height);
return cairo_script_surface_create (closure, content, width, height);
}
int
@ -28,12 +29,12 @@ main (int argc, char **argv)
char buf[4096];
snprintf (buf, sizeof (buf), "%s.trace", basename (argv[i]));
cairo_script_context_destroy (hooks.closure);
hooks.closure = cairo_script_context_create (buf);
cairo_device_destroy (hooks.closure);
hooks.closure = cairo_script_create (buf);
cairo_script_interpreter_install_hooks (csi, &hooks);
cairo_script_interpreter_run (csi, argv[i]);
}
cairo_script_context_destroy (hooks.closure);
cairo_device_destroy (hooks.closure);
return cairo_script_interpreter_destroy (csi);
}

View file

@ -46,7 +46,7 @@ static void *_dlhandle = RTLD_NEXT;
(*name##_real) (args); \
})
static cairo_script_context_t *fdr_context;
static cairo_device_t *fdr_context;
static const cairo_user_data_key_t fdr_key;
static void
@ -126,7 +126,7 @@ cairo_create (cairo_surface_t *surface)
if (fdr_context == NULL) {
const char *env = getenv ("CAIRO_SPHINX_FD");
int fd = env ? atoi (env) : 1;
fdr_context = DLCALL (cairo_script_context_create_for_stream,
fdr_context = DLCALL (cairo_script_create_for_stream,
fdr_write, (void *) (intptr_t) fd);
}

View file

@ -135,7 +135,7 @@ daemonize (void)
/* Let the parent go. */
switch (fork ()) {
case -1: return -1;
case 0: break;
case 0: break;
default: _exit (0);
}
@ -145,13 +145,11 @@ daemonize (void)
/* Refork to yield session leadership. */
oldhup = signal (SIGHUP, SIG_IGN);
switch (fork ()) { /* refork to yield session leadership. */
switch (fork ()) {
case -1: return -1;
case 0: break;
case 0: break;
default: _exit (0);
}
signal (SIGHUP, oldhup);
/* Establish stdio. */
@ -427,6 +425,7 @@ u8_cmp (const void *A, const void *B)
static uint8_t
median (uint8_t *values, int count)
{
/* XXX could use a fast median here if we cared */
qsort (values, count, 1, u8_cmp);
return values[count/2];
}
@ -667,16 +666,16 @@ checksum (const char *filename)
static void
write_trace (struct clients *clients)
{
cairo_script_context_t *ctx;
cairo_device_t *ctx;
gchar *csum;
char buf[4096];
int i;
mkdir ("output", 0777);
ctx = cairo_script_context_create ("output/cairo-sphinx.trace");
ctx = cairo_script_create ("output/cairo-sphinx.trace");
cairo_script_from_recording_surface (ctx, clients->recording);
cairo_script_context_destroy (ctx);
cairo_device_destroy (ctx);
csum = checksum ("output/cairo-sphinx.trace");
@ -1262,7 +1261,7 @@ do_server (const char *path)
}
} else if (strncmp (line, ".complete", 9) == 0) {
clients_complete (&clients, pfd[n].fd);
} else if (strncmp (line, ".recording", 5) == 0) {
} else if (strncmp (line, ".recording", 10) == 0) {
clients_recording (&clients, pfd[n].fd, line + 6);
} else {
printf ("do_command (%s)\n", line);

View file

@ -4567,7 +4567,7 @@ cairo_xlib_surface_create_with_xrender_format (Display *dpy,
#if CAIRO_HAS_SCRIPT_SURFACE
#include <cairo-script.h>
cairo_surface_t *
cairo_script_surface_create (cairo_script_context_t *ctx,
cairo_script_surface_create (cairo_device_t *device,
cairo_content_t content,
double width,
double height)
@ -4577,7 +4577,7 @@ cairo_script_surface_create (cairo_script_context_t *ctx,
_enter_trace ();
ret = DLCALL (cairo_script_surface_create, ctx, content, width, height);
ret = DLCALL (cairo_script_surface_create, device, content, width, height);
surface_id = _create_surface_id (ret);
_emit_line_info ();
@ -4602,7 +4602,7 @@ cairo_script_surface_create (cairo_script_context_t *ctx,
}
cairo_surface_t *
cairo_script_surface_create_for_target (cairo_script_context_t *ctx,
cairo_script_surface_create_for_target (cairo_device_t *device,
cairo_surface_t *target)
{
cairo_surface_t *ret;
@ -4610,7 +4610,7 @@ cairo_script_surface_create_for_target (cairo_script_context_t *ctx,
_enter_trace ();
ret = DLCALL (cairo_script_surface_create_for_target, ctx, target);
ret = DLCALL (cairo_script_surface_create_for_target, device, target);
surface_id = _create_surface_id (ret);
_emit_line_info ();