mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 06:28:01 +02:00
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:
parent
f617d5fc98
commit
49ab86772a
10 changed files with 312 additions and 283 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue