<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lib.cairo">
    <title>gmane.comp.lib.cairo</title>
    <link>http://blog.gmane.org/gmane.comp.lib.cairo</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22728"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22722"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22721"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22719"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22714"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22711"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22708"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22704"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22701"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22695"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22688"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22687"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22684"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22682"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22681"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22680"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22679"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22671"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22664"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.cairo/22659"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22728">
    <title>Subsample at x,y position</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22728</link>
    <description>&lt;pre&gt;Hi!
I'm Synfig developer and I am working on incorporate Cairo graphics on
current Synfig render method. Synfig is a 2D vector animation application
but it has some particularities. It does support layers that act like
raster filters (blur, distortions, etc.) apart of the typical geometry
layers (circle, rectangle, polygon, bezier shape. etc).

Synfig has its own Surface system that uses float ARGB color and HDR
support. Each geometry layer renders its content using the Synfig surface
primitives (very simple ones). The filter layers does its filter job by
asking the the layers below it for the color result on a given user space
point (x,y). Doing a subsampling of the returned value around the pixel
position allows to render properly the filter layer. So all the geometry
layers should define a function to return the color that it renders based
on a give x,y position.

When Cairo were implemented, floating point color and HDR will be lost. But
that's not the problem.

My plan to implement Cairo libraries is replace the geometry layers low
level calls to Synfig surface with high level calls to Cairo context API.
But the problem comes when the layer has to define a member function to
return the color on a certain x,y position. It is needed to give support to
the filter layers.

I've seen that cairo_context_t has three member functions that do something
similar. They return true if the given x,y point is inside the path or the
fill:

cairo_in_fill, cairo_in_stroke and cairo_in_clip

Since they were plain color I can assume than when the returned value is
true, the color at x,y is the layer's color.
The problem comes when using gradient patterns. I don't find any Cairo
function that tells me the color of the gradient at a certain x,y, position.

Any idea?

Thanks in advance!
&lt;/pre&gt;</description>
    <dc:creator>Carlos López González</dc:creator>
    <dc:date>2012-05-25T13:16:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22722">
    <title>[PATCH 1/3] cairo_rwlock: introduce rwlock.</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22722</link>
    <description>&lt;pre&gt;Here is a scenario which make us to introduce rwlock.
1. One thread(A) is rendering to a surface which has a snapshot attached.
2. Some other threads(B...) are replaying recording surfaces which has the
snapshot of the surface which is being rendered in thread 1.

If thread B already started the replaying, and already get the source
by using _cairo_surface_snapshot_source, then before the thread B finish
its accessing to the source surface, the thread A start to rendering to
the source surface. Although thread A will trigger a COW, but it's too
late, as thread B already got the original surface pointer, thus the
race ocurrs here, both B is reading and A is writing to the same area
concurrently.

To fix this issue, we need to use write lock at thread B, and use read
lock at thread B to avoid the possible race condtion.

Currently, we only implement pthread_rw_lock if the system supports
pthread. Otherwise, we degrade the rw_lock to a normal lock.

Signed-off-by: Zhigang Gong &amp;lt;zhigang.gong&amp;lt; at &amp;gt;linux.intel.com&amp;gt;
---
 build/configure.ac.pthread      |   13 ++++
 src/Makefile.sources            |    4 +
 src/cairo-rwlock-impl-private.h |  135 +++++++++++++++++++++++++++++++++++++++
 src/cairo-rwlock-private.h      |   51 +++++++++++++++
 src/cairo-rwlock-type-private.h |   89 +++++++++++++++++++++++++
 src/cairo-rwlock.c              |   56 ++++++++++++++++
 6 files changed, 348 insertions(+), 0 deletions(-)
 create mode 100644 src/cairo-rwlock-impl-private.h
 create mode 100644 src/cairo-rwlock-private.h
 create mode 100644 src/cairo-rwlock-type-private.h
 create mode 100644 src/cairo-rwlock.c

diff --git a/build/configure.ac.pthread b/build/configure.ac.pthread
index 29c930d..72ed03a 100644
--- a/build/configure.ac.pthread
+++ b/build/configure.ac.pthread
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -76,6 +76,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int test_mutex_attr (void)
 x |= pthread_mutex_destroy (&amp;amp;mutex);
 x |= pthread_mutexattr_destroy (&amp;amp;attr);
 return x;
+}
+
+pthread_rwlock_t test_rwlock_initializer = PTHREAD_RWLOCK_INITIALIZER;
+int test_rwlock (void)
+{
+int x = 0;
+pthread_rwlock_t rwlock;
+x |= pthread_rwlock_init(&amp;amp;rwlock, NULL);
+x |= pthread_rwlock_wrlock(&amp;amp;rwlock);
+x |= pthread_rwlock_unlock(&amp;amp;rwlock);
+x |= pthread_rwlock_rdlock(&amp;amp;rwlock);
+x |= pthread_rwlock_unlock(&amp;amp;rwlock);
+x |= pthread_rwlock_destroy(&amp;amp;rwlock);
 }])
 
 dnl -----------------------------------------------------------------------
diff --git a/src/Makefile.sources b/src/Makefile.sources
index f487fc1..198c276 100644
--- a/src/Makefile.sources
+++ b/src/Makefile.sources
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -91,6 +91,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; cairo_private = \
 cairo-mutex-list-private.h \
 cairo-mutex-private.h \
 cairo-mutex-type-private.h \
+cairo-rwlock-private.h \
+cairo-rwlock-impl-private.h \
+cairo-rwlock-type-private.h \
 cairo-output-stream-private.h \
 cairo-paginated-private.h \
 cairo-paginated-surface-private.h \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -181,6 +184,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; cairo_sources = \
 cairo-misc.c \
 cairo-mono-scan-converter.c \
 cairo-mutex.c \
+cairo-rwlock.c \
 cairo-no-compositor.c \
 cairo-observer.c \
 cairo-output-stream.c \
diff --git a/src/cairo-rwlock-impl-private.h b/src/cairo-rwlock-impl-private.h
new file mode 100644
index 0000000..67a8fc9
--- /dev/null
+++ b/src/cairo-rwlock-impl-private.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,135 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2002 University of Southern California
+ * Copyright © 2005,2007 Red Hat, Inc.
+ * Copyright © 2007 Mathias Hasselmann
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * The Initial Developer of the Original Code is University of Southern
+ * California.
+ *
+ * Contributor(s):
+ * Zhigang Gong &amp;lt;zhigang.gong&amp;lt; at &amp;gt;linux.intel.com&amp;gt;
+ */
+
+#ifndef CAIRO_RWLOCK_IMPL_PRIVATE_H
+#define CAIRO_RWLOCK_IMPL_PRIVATE_H
+#include "cairo.h"
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* A fully qualified no-operation statement */
+#define CAIRO_RWLOCK_IMPL_NOOPdo {/*no-op*/} while (0)
+/* And one that evaluates its argument once */
+#define CAIRO_RWLOCK_IMPL_NOOP1(expr)        do { (void)(expr); } while (0)
+/* Note: 'if (expr) {}' is an alternative to '(void)(expr);' that will 'use' the
+ * result of __attribute__((warn_used_result)) functions. */
+
+#if CAIRO_NO_RWLOCK
+
+/* No rwlocks */
+
+  typedef int cairo_rwlock_impl_t;
+
+# define CAIRO_RWLOCK_IMPL_NO 1
+# define CAIRO_RWLOCK_IMPL_LOCK(rwlock) CAIRO_RWLOCK_IMPL_NOOP1(rwlock)
+# define CAIRO_RWLOCK_IMPL_UNLOCK(rwlock) CAIRO_RWLOCK_IMPL_NOOP1(rwlock)
+# define CAIRO_RWLOCK_IMPL_NIL_INITIALIZER 0
+
+#elif defined(_WIN32) /******************************************************/
+
+#define WIN32_LEAN_AND_MEAN
+/* We require Windows 2000 features such as ETO_PDY */
+#if !defined(WINVER) || (WINVER &amp;lt; 0x0500)
+# define WINVER 0x0500
+#endif
+#if !defined(_WIN32_WINNT) || (_WIN32_WINNT &amp;lt; 0x0500)
+# define _WIN32_WINNT 0x0500
+#endif
+
+# include &amp;lt;windows.h&amp;gt;
+
+  typedef CRITICAL_SECTION cairo_rwlock_impl_t;
+
+# define CAIRO_RWLOCK_IMPL_WIN32 1
+# define CAIRO_RWLOCK_IMPL_RDLOCK(rwlock) EnterCriticalSection (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_WRLOCK(rwlock) EnterCriticalSection (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_UNLOCK(rwlock) LeaveCriticalSection (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_INIT(rwlock) InitializeCriticalSection (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_FINI(rwlock) DeleteCriticalSection (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_NIL_INITIALIZER { NULL, 0, 0, NULL, NULL, 0 }
+
+#elif defined __OS2__ /******************************************************/
+
+# define INCL_BASE
+# define INCL_PM
+# include &amp;lt;os2.h&amp;gt;
+
+  typedef HMTX cairo_rwlock_impl_t;
+
+# define CAIRO_RWLOCK_IMPL_OS2 1
+# define CAIRO_RWLOCK_IMPL_RDLOCK(rwlock) DosRequestMutexSem(rwlock, SEM_INDEFINITE_WAIT)
+# define CAIRO_RWLOCK_IMPL_WRLOCK(rwlock) DosRequestMutexSem(rwlock, SEM_INDEFINITE_WAIT)
+# define CAIRO_RWLOCK_IMPL_UNLOCK(rwlock) DosReleaseMutexSem(rwlock)
+# define CAIRO_RWLOCK_IMPL_INIT(rwlock) DosCreateMutexSem (NULL, &amp;amp;(rwlock), 0L, FALSE)
+# define CAIRO_RWLOCK_IMPL_FINI(rwlock) DosCloseMutexSem (rwlock)
+# define CAIRO_RWLOCK_IMPL_NIL_INITIALIZER 0
+
+#elif CAIRO_HAS_BEOS_SURFACE /***********************************************/
+
+  typedef BLocker* cairo_rwlock_impl_t;
+
+# define CAIRO_RWLOCK_IMPL_BEOS 1
+# define CAIRO_RWLOCK_IMPL_RDLOCK(rwlock) (rwlock)-&amp;gt;Lock()
+# define CAIRO_RWLOCK_IMPL_WRLOCK(rwlock) (rwlock)-&amp;gt;Lock()
+# define CAIRO_RWLOCK_IMPL_UNLOCK(rwlock) (rwlock)-&amp;gt;Unlock()
+# define CAIRO_RWLOCK_IMPL_INIT(rwlock) (rwlock) = new BLocker()
+# define CAIRO_RWLOCK_IMPL_FINI(rwlock) delete (rwlock)
+# define CAIRO_RWLOCK_IMPL_NIL_INITIALIZER NULL
+
+#elif CAIRO_HAS_PTHREAD /* and finally if there are no native rwlocks ********/
+
+# include &amp;lt;pthread.h&amp;gt;
+  typedef pthread_rwlock_t cairo_rwlock_impl_t;
+
+# define CAIRO_RWLOCK_IMPL_PTHREAD 1
+# define CAIRO_RWLOCK_IMPL_INIT(rwlock) pthread_rwlock_init (&amp;amp;(rwlock), NULL)
+# define CAIRO_RWLOCK_IMPL_RDLOCK(rwlock) pthread_rwlock_rdlock (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_WRLOCK(rwlock) pthread_rwlock_wrlock (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_UNLOCK(rwlock) pthread_rwlock_unlock (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_FINI(rwlock) pthread_rwlock_destroy (&amp;amp;(rwlock))
+# define CAIRO_RWLOCK_IMPL_NIL_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
+
+#else /**********************************************************************/
+
+# error "XXX: No rwlock implementation found.  Cairo will not work with multiple threads.  Define CAIRO_NO_RWLOCK to 1 to acknowledge and accept this limitation and compile cairo without thread-safety support."
+
+#endif
+
+#endif
diff --git a/src/cairo-rwlock-private.h b/src/cairo-rwlock-private.h
new file mode 100644
index 0000000..1ca361d
--- /dev/null
+++ b/src/cairo-rwlock-private.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,51 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2002 University of Southern California
+ * Copyright © 2005,2007 Red Hat, Inc.
+ * Copyright © 2007 Mathias Hasselmann
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * The Initial Developer of the Original Code is University of Southern
+ * California.
+ *
+ * Contributor(s):
+ * Zhigang Gong &amp;lt;zhigang.gong&amp;lt; at &amp;gt;linux.intel.com&amp;gt;
+ */
+
+#ifndef CAIRO_RWLOCK_PRIVATE_H
+#define CAIRO_RWLOCK_PRIVATE_H
+
+#include "cairo-rwlock-type-private.h"
+
+CAIRO_BEGIN_DECLS
+
+cairo_private void _cairo_rwlock_initialize (void);
+cairo_private void _cairo_rwlock_finalize (void);
+
+CAIRO_END_DECLS
+
+#endif
diff --git a/src/cairo-rwlock-type-private.h b/src/cairo-rwlock-type-private.h
new file mode 100644
index 0000000..f60fa6a
--- /dev/null
+++ b/src/cairo-rwlock-type-private.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,89 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2002 University of Southern California
+ * Copyright © 2005,2007 Red Hat, Inc.
+ * Copyright © 2007 Mathias Hasselmann
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * The Initial Developer of the Original Code is University of Southern
+ * California.
+ *
+ * Contributor(s):
+ * Zhigang Gong &amp;lt;zhigang.gong&amp;lt; at &amp;gt;linux.intel.com&amp;gt;
+ */
+
+#ifndef CAIRO_RWLOCK_TYPE_PRIVATE_H
+#define CAIRO_RWLOCK_TYPE_PRIVATE_H
+
+#include "cairo-compiler-private.h"
+#include "cairo-rwlock-impl-private.h"
+
+/* Only the following four are mandatory at this point */
+#ifndef CAIRO_RWLOCK_IMPL_RDLOCK
+# error "CAIRO_RWLOCK_IMPL_RDLOCK not defined.  Check cairo-rwlock-impl-private.h."
+#endif
+#ifndef CAIRO_RWLOCK_IMPL_WRLOCK
+# error "CAIRO_RWLOCK_IMPL_WRLOCK not defined.  Check cairo-rwlock-impl-private.h."
+#endif
+#ifndef CAIRO_RWLOCK_IMPL_UNLOCK
+# error "CAIRO_RWLOCK_IMPL_UNLOCK not defined.  Check cairo-rwlock-impl-private.h."
+#endif
+#ifndef CAIRO_RWLOCK_IMPL_NIL_INITIALIZER
+# error "CAIRO_RWLOCK_IMPL_NIL_INITIALIZER not defined.  Check cairo-rwlock-impl-private.h."
+#endif
+
+
+/* Make sure everything we want is defined */
+#ifndef CAIRO_RWLOCK_IMPL_INIT
+# error "CAIRO_RWLOCK_IMPL_INIT not defined"
+#endif
+#ifndef CAIRO_RWLOCK_IMPL_FINI
+# error "CAIRO_RWLOCK_IMPL_FINI not defined"
+#endif
+#ifndef CAIRO_RWLOCK_IMPL_NIL_INITIALIZER
+# error "CAIRO_RWLOCK_IMPL_NIL_INITIALIZER not defined"
+#endif
+
+/* Public interface. */
+
+# define cairo_rwlock_tcairo_rwlock_impl_t
+
+#define CAIRO_RWLOCK_RDLOCKCAIRO_RWLOCK_IMPL_RDLOCK
+#define CAIRO_RWLOCK_WRLOCKCAIRO_RWLOCK_IMPL_WRLOCK
+#define CAIRO_RWLOCK_UNLOCKCAIRO_RWLOCK_IMPL_UNLOCK
+#define CAIRO_RWLOCK_INITCAIRO_RWLOCK_IMPL_INIT
+#define CAIRO_RWLOCK_FINICAIRO_RWLOCK_IMPL_FINI
+#define CAIRO_RWLOCK_NIL_INITIALIZERCAIRO_RWLOCK_IMPL_NIL_INITIALIZER
+
+#ifndef CAIRO_RWLOCK_IS_LOCKED
+# define CAIRO_RWLOCK_IS_LOCKED(name) 1
+#endif
+#ifndef CAIRO_RWLOCK_IS_UNLOCKED
+# define CAIRO_RWLOCK_IS_UNLOCKED(name) 1
+#endif
+
+#endif
diff --git a/src/cairo-rwlock.c b/src/cairo-rwlock.c
new file mode 100644
index 0000000..492716e
--- /dev/null
+++ b/src/cairo-rwlock.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,56 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2007 Mathias Hasselmann
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * Contributor(s):
+ *Mathias Hasselmann &amp;lt;mathias.hasselmann&amp;lt; at &amp;gt;gmx.de&amp;gt;
+ */
+
+#include "cairoint.h"
+
+#include "cairo-rwlock-private.h"
+
+static int _cairo_rwlock_initialized = 0;
+
+void _cairo_rwlock_initialize (void)
+{
+    if (_cairo_rwlock_initialized)
+        return;
+
+    _cairo_rwlock_initialized = TRUE;
+
+}
+
+void _cairo_rwlock_finalize (void)
+{
+    if (!_cairo_rwlock_initialized)
+        return;
+
+    _cairo_rwlock_initialized = FALSE;
+
+}
&lt;/pre&gt;</description>
    <dc:creator>Zhigang Gong</dc:creator>
    <dc:date>2012-05-25T09:13:47</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22721">
    <title>[PATCH] gl: fix wrong references of texture in anothergl_ctx</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22721</link>
    <description>&lt;pre&gt;If we do something like following:

cr1 = cairo_create(surf1);
cr2 = cairo_create(surf2);

... draw something to surf1 ...

cairo_set_source_surface(cr2, surf1);
cairo_rectangle(cr2, ..... );
cairo_fill(cr2);

You will find the current code will reference a texture in cr1 gl
context while drawing cr2. Thus it references a null texture and results
to wrong rendering.

This patch severs as fixing this issue(like gl-surface-source test case)
by copying out the texture from cr1, then regenerating a new one to cr2.

Signed-off-by: Yuanhan Liu &amp;lt;yuanhan.liu&amp;lt; at &amp;gt;linux.intel.com&amp;gt;
---
 src/cairo-gl-composite.c        |   77 +++++++++++++++++++++++++++++++++++++--
 src/cairo-gl-glyphs.c           |    3 +-
 src/cairo-gl-private.h          |    4 ++-
 src/cairo-gl-spans-compositor.c |    5 +--
 src/cairo-gl-surface.c          |    7 ++++
 src/cairo-gl-traps-compositor.c |   12 ++----
 6 files changed, 91 insertions(+), 17 deletions(-)

diff --git a/src/cairo-gl-composite.c b/src/cairo-gl-composite.c
index bcf41ec..97c6118 100644
--- a/src/cairo-gl-composite.c
+++ b/src/cairo-gl-composite.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -63,12 +63,83 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cairo_gl_composite_set_source (cairo_gl_composite_t *setup,
    sample, extents);
 }
 
+static cairo_status_t
+_cairo_gl_composite_set_source_texture_operand (cairo_gl_composite_t *setup,
+cairo_surface_t *src)
+{
+    cairo_gl_context_t *ctx;
+    cairo_gl_surface_t *src_gl_surf = (cairo_gl_surface_t *)src;
+    cairo_status_t status;
+    GLvoid *pixels;
+    GLuint dst_tex;
+    GLint src_tex = src_gl_surf-&amp;gt;operand.texture.tex;
+    int width = src_gl_surf-&amp;gt;width;
+    int height = src_gl_surf-&amp;gt;height;
+    int cpp = src_gl_surf-&amp;gt;cpp;
+    GLenum format = src_gl_surf-&amp;gt;format;
+
+
+    /*
+     * A flush is a need to keep things in order
+     *
+     * FIXME: or we may delay it at the draw time?
+     */
+    cairo_surface_flush(src);
+    cairo_surface_flush(&amp;amp;setup-&amp;gt;dst-&amp;gt;base);
+
+    /* Read the texture from src surface first */
+    status = _cairo_gl_context_acquire(src-&amp;gt;device, &amp;amp;ctx);
+    if (unlikely(status))
+        return status;
+
+    pixels = malloc(width * height * cpp);
+    glBindTexture(ctx-&amp;gt;tex_target, src_tex);
+    glGetTexImage(ctx-&amp;gt;tex_target, 0, format, GL_UNSIGNED_BYTE, pixels);
+    status = _cairo_gl_context_release(ctx, status);
+    if (unlikely(status))
+        return status;
+
+
+    /* regenerate a texture in the dest surface */
+    status = _cairo_gl_context_acquire(setup-&amp;gt;dst-&amp;gt;base.device, &amp;amp;ctx);
+    if (unlikely(status))
+        goto fail;
+
+    glGenTextures(1, &amp;amp;dst_tex);
+    glBindTexture(ctx-&amp;gt;tex_target, dst_tex);
+    glTexParameteri (ctx-&amp;gt;tex_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri (ctx-&amp;gt;tex_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glTexImage2D(ctx-&amp;gt;tex_target, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, pixels);
+
+    _cairo_gl_operand_destroy(&amp;amp;setup-&amp;gt;src);
+    setup-&amp;gt;src = src_gl_surf-&amp;gt;operand;
+    setup-&amp;gt;src.texture.tex = dst_tex;
+
+    status = _cairo_gl_context_release(ctx, status);
+
+fail:
+    free(pixels);
+    return status;
+}
+
 void
 _cairo_gl_composite_set_source_operand (cairo_gl_composite_t *setup,
-const cairo_gl_operand_t *source)
+const cairo_surface_t *src)
 {
-    _cairo_gl_operand_destroy (&amp;amp;setup-&amp;gt;src);
-    _cairo_gl_operand_copy (&amp;amp;setup-&amp;gt;src, source);
+    cairo_gl_operand_t *operand = source_to_operand(src);
+
+    /*
+     * When we try to use a texture from another gl_ctx, we should
+     * handle it in a special way, like extract it from src_gl_ctx,
+     * then remake a texture in dst_gl_ctx.
+     */
+    if ((operand &amp;amp;&amp;amp; operand-&amp;gt;type == CAIRO_GL_OPERAND_TEXTURE) &amp;amp;&amp;amp;
+        (src-&amp;gt;device &amp;amp;&amp;amp; src-&amp;gt;device != setup-&amp;gt;dst-&amp;gt;base.device)) {
+        _cairo_gl_composite_set_source_texture_operand(setup, src);
+    } else {
+        _cairo_gl_operand_destroy (&amp;amp;setup-&amp;gt;src);
+        _cairo_gl_operand_copy (&amp;amp;setup-&amp;gt;src, operand);
+    }
 }
 
 void
diff --git a/src/cairo-gl-glyphs.c b/src/cairo-gl-glyphs.c
index c2660ac..6afced9 100644
--- a/src/cairo-gl-glyphs.c
+++ b/src/cairo-gl-glyphs.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -252,8 +252,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; render_glyphs (cairo_gl_surface_t *dst,
     if (source == NULL) {
     _cairo_gl_composite_set_solid_source (&amp;amp;setup, CAIRO_COLOR_WHITE);
     } else {
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup,
-    source_to_operand (source));
+    _cairo_gl_composite_set_source_operand (&amp;amp;setup, source);
 
     }
 
diff --git a/src/cairo-gl-private.h b/src/cairo-gl-private.h
index eb75cd9..f354c63 100644
--- a/src/cairo-gl-private.h
+++ b/src/cairo-gl-private.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -159,6 +159,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _cairo_gl_surface {
     cairo_gl_operand_t operand;
 
     int width, height;
+    int cpp;
+    GLenum format;
 
     GLuint tex; /* GL texture object containing our data. */
     GLuint fb; /* GL framebuffer object wrapping our data. */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -506,7 +508,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cairo_gl_composite_set_solid_source (cairo_gl_composite_t *setup,
 
 cairo_private void
 _cairo_gl_composite_set_source_operand (cairo_gl_composite_t *setup,
-const cairo_gl_operand_t *source);
+const cairo_surface_t *src);
 
 cairo_private cairo_int_status_t
 _cairo_gl_composite_set_mask (cairo_gl_composite_t *setup,
diff --git a/src/cairo-gl-spans-compositor.c b/src/cairo-gl-spans-compositor.c
index 4c5cef6..ae8668f 100644
--- a/src/cairo-gl-spans-compositor.c
+++ b/src/cairo-gl-spans-compositor.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -327,7 +327,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static cairo_int_status_t copy_boxes (void *_dst,
     if (unlikely (status))
         goto FAIL;
 
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup, source_to_operand (src));
+    _cairo_gl_composite_set_source_operand (&amp;amp;setup, src);
     _cairo_gl_operand_translate (&amp;amp;setup.src, -dx, -dy);
 
     status = _cairo_gl_composite_begin (&amp;amp;setup, &amp;amp;ctx);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -382,8 +382,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; composite_boxes (void*_dst,
     if (unlikely (status))
         goto FAIL;
 
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup,
-    src_operand);
+    _cairo_gl_composite_set_source_operand(&amp;amp;setup, abstract_src);
     _cairo_gl_operand_translate (&amp;amp;setup.src, -src_x, -src_y);
 
     _cairo_gl_composite_set_mask_operand (&amp;amp;setup,
diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c
index c2e9687..494363b 100644
--- a/src/cairo-gl-surface.c
+++ b/src/cairo-gl-surface.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -433,6 +433,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cairo_gl_surface_create_scratch (cairo_gl_context_t   *ctx,
     cairo_gl_surface_t *surface;
     GLenum format;
     GLuint tex;
+    int cpp;
 
     glGenTextures (1, &amp;amp;tex);
     surface = (cairo_gl_surface_t *)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -454,10 +455,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cairo_gl_surface_create_scratch (cairo_gl_context_t   *ctx,
 ASSERT_NOT_REACHED;
     case CAIRO_CONTENT_COLOR_ALPHA:
 format = GL_RGBA;
+cpp = 4;
 break;
     case CAIRO_CONTENT_ALPHA:
 /* We want to be trying GL_ALPHA framebuffer objects here. */
 format = GL_RGBA;
+cpp = 4;
 break;
     case CAIRO_CONTENT_COLOR:
 /* GL_RGB is almost what we want here -- sampling 1 alpha when
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -469,12 +472,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cairo_gl_surface_create_scratch (cairo_gl_context_t   *ctx,
  * channel with 1 when blending.
  */
 format = GL_RGBA;
+cpp = 4;
 break;
     }
 
     glTexImage2D (ctx-&amp;gt;tex_target, 0, format, width, height, 0,
   format, GL_UNSIGNED_BYTE, NULL);
 
+    surface-&amp;gt;format = format;
+    surface-&amp;gt;cpp = cpp;
+
     return &amp;amp;surface-&amp;gt;base;
 }
 
diff --git a/src/cairo-gl-traps-compositor.c b/src/cairo-gl-traps-compositor.c
index 776b74c..b0f5bf8 100644
--- a/src/cairo-gl-traps-compositor.c
+++ b/src/cairo-gl-traps-compositor.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -172,8 +172,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; composite_boxes (void*_dst,
     if (unlikely (status))
         goto FAIL;
 
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup,
-    source_to_operand (abstract_src));
+    _cairo_gl_composite_set_source_operand (&amp;amp;setup, abstract_src);
 
     _cairo_gl_composite_set_mask_operand (&amp;amp;setup,
   source_to_operand (abstract_mask));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -212,8 +211,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; composite (void*_dst,
     if (unlikely (status))
         goto FAIL;
 
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup,
-    source_to_operand (abstract_src));
+    _cairo_gl_composite_set_source_operand (&amp;amp;setup, abstract_src);
 
     _cairo_gl_composite_set_mask_operand (&amp;amp;setup,
   source_to_operand (abstract_mask));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -354,8 +352,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; composite_traps (void*_dst,
     if (unlikely (status))
         goto FAIL;
 
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup,
-    source_to_operand (abstract_src));
+    _cairo_gl_composite_set_source_operand (&amp;amp;setup, abstract_src);
     status = traps_to_operand (_dst, extents, antialias, traps, &amp;amp;setup.mask);
     if (unlikely (status))
 goto FAIL;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -451,8 +448,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; composite_tristrip (void*_dst,
     if (unlikely (status))
         goto FAIL;
 
-    _cairo_gl_composite_set_source_operand (&amp;amp;setup,
-    source_to_operand (abstract_src));
+    _cairo_gl_composite_set_source_operand (&amp;amp;setup, abstract_src);
 
     //_cairo_gl_composite_set_mask_surface (&amp;amp;setup, mask, 0, 0);
 
&lt;/pre&gt;</description>
    <dc:creator>Yuanhan Liu</dc:creator>
    <dc:date>2012-05-24T11:37:49</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22719">
    <title>Create two surface and copy from one surface to another</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22719</link>
    <description>&lt;pre&gt;Hello everyone,

i would like to know how to create two surfaces.

On the first surface i want to draw circle and ellipse...
On the second surdace i want to draw rectangle.

I would like to copy portion of the second surface to the first surface?

Could someone help me, please, posting a little example of this?

Thank you very much.
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo&lt;/pre&gt;</description>
    <dc:creator>Davide Calaminici</dc:creator>
    <dc:date>2012-05-23T18:29:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22714">
    <title>How to load a font from a *.ttf file?</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22714</link>
    <description>&lt;pre&gt;Hi,
how can I load a TrueType Font in cairo? I need to render some test on a 
surface (DirectFB backend, but I think that is not relevant), using a 
monospaced font. I tried Pango libraries, but it takes the font from 
FontConfig and I can't properly configure the width an height of the 
font, I can't resize the font to fit in a precise logical extent. Cairo 
scaled font seems to be useful for my purpose, but I don't understand 
how to load a *ttf.
Thank you in advance
Carlo
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>Carlo</dc:creator>
    <dc:date>2012-05-20T14:01:58</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22711">
    <title>Getting SIGSEGV in pixman</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22711</link>
    <description>&lt;pre&gt;Hi,

(WinXP, MinGW (gcc-4.6.2), Cairo-1.12.2, Pixman-0.25.2)

My program runs successfully with Cairo-1.10.2, but getting SIGSEGV with 
1.12.2.

Back trace is as follows:

Debugger name and version: GNU gdb (GDB) 7.4
Program received signal SIGSEGV, Segmentation fault.
At .sdk\pixman\pixman\pixman-fast-path.c:619
 &amp;gt; bt
#0  0x6ea7f29f in fast_composite_over_8888_8888 (imp=0x21c5308, 
info=0x22d608) at .sdk\pixman\pixman\pixman-fast-path.c:619
#1  0x6e9c6ded in pixman_image_composite32 (op=PIXMAN_OP_OVER, 
src=0x21f12b8, mask=0x0, dest=0x21f0d78, src_x=0, src_y=0, mask_x=0, 
mask_y=0, dest_x=0, dest_y=0, width=919, height=10) at 
.sdk\pixman\pixman\pixman.c:712
#2  0x6e93ff68 in composite_boxes (_dst=0x21f0e40, op=CAIRO_OPERATOR_IN, 
abstract_src=0x21f0f88, abstract_mask=0x0, src_x=0, src_y=0, mask_x=0, 
mask_y=0, dst_x=0, dst_y=0, boxes=0x22df90, extents=0x22e240) at 
.sdk\cairo\src\cairo-image-compositor.c:523
#3  0x6e99e608 in composite_aligned_boxes (compositor=0x6ebde060, 
extents=0x22e208, boxes=0x22df90) at 
.sdk\cairo\src\cairo-spans-compositor.c:604
#4  0x6e99ebee in clip_and_composite_boxes (compositor=0x6ebde060, 
extents=0x22e208, boxes=0x22df90) at 
.sdk\cairo\src\cairo-spans-compositor.c:797
#5  0x6e99eeaf in _cairo_spans_compositor_paint (_compositor=0x6ebde060, 
extents=0x22e208) at .sdk\cairo\src\cairo-spans-compositor.c:896
#6  0x6e9ba70d in _cairo_compositor_paint (compositor=0x6ebde060, 
surface=0x21f0e40, op=CAIRO_OPERATOR_OVER, source=0x22e580, 
clip=0x21c2e40) at .sdk\cairo\src\cairo-compositor.c:65
#7  0x6e91f248 in _cairo_image_surface_paint 
(abstract_surface=0x21f0e40, op=CAIRO_OPERATOR_OVER, source=0x22e580, 
clip=0x21c2e40) at .sdk\cairo\src\cairo-image-surface.c:915
#8  0x6e970906 in _cairo_surface_paint (surface=0x21f0e40, 
op=CAIRO_OPERATOR_OVER, source=0x22e580, clip=0x21c2e40) at 
.sdk\cairo\src\cairo-surface.c:1876
#9  0x6e9a22d7 in _cairo_surface_offset_paint (target=0x21f0e40, x=0, 
y=663, op=CAIRO_OPERATOR_OVER, source=0x22e580, clip=0x21b7510) at 
.sdk\cairo\src\cairo-surface-offset.c:85
#10 0x6e95c671 in _cairo_fallback_compositor_paint 
(_compositor=0x6eb8ff44, extents=0x22e708) at 
.sdk\cairo\src\cairo-fallback-compositor.c:58
#11 0x6e9ba70d in _cairo_compositor_paint (compositor=0x6eb8ff44, 
surface=0x21efae0, op=CAIRO_OPERATOR_OVER, source=0x22ea68, clip=0x0) at 
.sdk\cairo\src\cairo-compositor.c:65
#12 0x6e920e82 in _cairo_win32_display_surface_paint (surface=0x21efae0, 
op=CAIRO_OPERATOR_OVER, source=0x22ea68, clip=0x0) at 
.sdk\cairo\src\win32\cairo-win32-display-surface.c:769
#13 0x6e970906 in _cairo_surface_paint (surface=0x21efae0, 
op=CAIRO_OPERATOR_OVER, source=0x22ea68, clip=0x0) at 
.sdk\cairo\src\cairo-surface.c:1876
#14 0x6e955cf4 in _cairo_gstate_fill (gstate=0x21ed208, path=0x21ed36c) 
at .sdk\cairo\src\cairo-gstate.c:1289
#15 0x6e984584 in _cairo_default_context_fill (abstract_cr=0x21ed088) at 
.sdk\cairo\src\cairo-default-context.c:1010
#16 0x6e9a7bd0 in cairo_fill (cr=0x21ed088) at .sdk\cairo\src\cairo.c:2201


Could you help me, please?


--
Regards,
Hakki Dogusan
http://www.dynaset.org/dogusanh/
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>Hakki Dogusan</dc:creator>
    <dc:date>2012-05-19T10:46:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22708">
    <title>Could I use cairo with opengles in android?</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22708</link>
    <description>&lt;pre&gt;Hi ,
I wonder where can find some samples show use cairo in android device.
rarely found ,so i try it myself, but seems can't render anything
details as below,
     cairo_surface_t *surface = NULL;
     const EGLint attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_BLUE_SIZE,
            8, EGL_GREEN_SIZE, 8, EGL_RED_SIZE, 8, EGL_RENDERABLE_TYPE,
            EGL_OPENGL_ES2_BIT, EGL_NONE };
    const EGLint ctx_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE
};

    EGLint format;
    EGLint numConfigs;
    EGLConfig config;
    EGLContext context;
    EGLint err;

    EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
    err = eglGetError();
    LOGE("eglGetDisplay err:%d", err);//return 12288

    eglInitialize(display, 0, 0);
    err = eglGetError();
    LOGE("eglInitialize err:%d", err);//return 12288

    eglChooseConfig(display, attribs, &amp;amp;config, 1, &amp;amp;numConfigs);
    err = eglGetError();
    LOGE("eglChooseConfig err:%d", err);

    eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &amp;amp;format);

    context = eglCreateContext(display, config, EGL_NO_CONTEXT,
ctx_attribs);
    err = eglGetError();
    LOGE("eglCreateContext err:%d", err);//return 12288

    cairo_device_t * device = cairo_egl_device_create(display, context);
    cairo_status_t status = cairo_device_status(device);//return success

    surface = cairo_gl_surface_create(device, CAIRO_CONTENT_ALPHA,
info-&amp;gt;width,
            info-&amp;gt;height);//return CAIRO_SURFACE_TYPE_GL type

I use another surface to display the result from surface(gl)
    cairo_set_operator(cr_display, CAIRO_OPERATOR_ADD);
    cairo_set_source_surface(cr_display, surface, 0, 0);
    cairo_paint(cr_display);

Who could help to figure out? thx
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo&lt;/pre&gt;</description>
    <dc:creator>Jihe Wei</dc:creator>
    <dc:date>2012-05-18T09:54:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22704">
    <title>[PATCH 0/3] quartz: Fix breakage</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22704</link>
    <description>&lt;pre&gt;Quartz is currently failing badly because of multiple issues.  This
patchset addresses two minor issues and the incorrect implementation
of map_to_image.

The main thing left to be fixed is unbound surfaces (as sources/masks).

Andrea

--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>Andrea Canciani</dc:creator>
    <dc:date>2012-05-17T20:33:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22701">
    <title>[PATCH 1/3] png: Implement conversion of CAIRO_FORMAT_RGB30to string</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22701</link>
    <description>&lt;pre&gt;Fixes

png.c:55: warning: enumeration value ‘CAIRO_FORMAT_RGB30’ not handled
in switch
---
 test/png.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/test/png.c b/test/png.c
index e90ac66..3980ddc 100644
--- a/test/png.c
+++ b/test/png.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -57,6 +57,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; format_to_string (cairo_format_t format)
     case CAIRO_FORMAT_A8:     return "a8";
     case CAIRO_FORMAT_RGB16_565:  return "rgb16";
     case CAIRO_FORMAT_RGB24:  return "rgb24";
+    case CAIRO_FORMAT_RGB30:  return "rgb30";
     case CAIRO_FORMAT_ARGB32: return "argb32";
     case CAIRO_FORMAT_INVALID:
     default: return "???";
&lt;/pre&gt;</description>
    <dc:creator>Andrea Canciani</dc:creator>
    <dc:date>2012-05-17T20:30:43</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22695">
    <title>[PATCH 1/5] surface: Improvements to map/unmap</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22695</link>
    <description>&lt;pre&gt;The map public API is more useful if it guarantees that the image it
returns has a valid format. Conversely the private API probably wants
to avoid any kind of conversion as any pixel manipulation is performed
by pixman.

In addition to this, the backend functions for map and unmap can be
improved by:

1. making map/unmap symmetric (i.e. if map counts as +1 on the
   refcount, unmap counts as -1).

2. ensuring that map returns a cairo_image_surface_t * (this is not
   the case for quartz and some other backends, but no warning is
   issued because they are returning cairo_surface_t *).

This patchset should implement these improvements. Unfortunately this
also means that it affects many files in multiple different backends.

Please review and test (and hope with me that things did not break
while rebasing).

Andrea


--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>Andrea Canciani</dc:creator>
    <dc:date>2012-05-17T20:28:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22688">
    <title>cairo 1.12 crashes X server</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22688</link>
    <description>&lt;pre&gt;Another one of "those" issues. I tried to switch Linux version of my
program from cairo 1.10 to cairo 1.12.
The program is built as a dynamic executable, using shared libcairo. It
is also using libgtk (which in turn also needs cairo, hence the shared
version).
When using cairo 1.10 - program works, no issuse. With cairo 1.12 -
attempting to launch the program crashes X server, of all things.

Any ideas as to why this may be happening or even how to track this
issue down would be greatly appreciated!
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>cu</dc:creator>
    <dc:date>2012-05-17T02:31:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22687">
    <title>Compiling Cairo for unicode ucs2</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22687</link>
    <description>&lt;pre&gt;Hi,

I've been using a Hidden line removal python script which uses cairo,
but I'm getting the following error:

/usr/lib/python2.6/dist-packages/cairo/_cairo.so: undefined symbol:
PyUnicodeUCS4_AsUTF8String

Apparently I need to compile cairo with Python compiled to ucs2.

I've downloaded pycairo-1.10.0.tar.bz2, extracted to
/opt/pycairo-1.10.0 and then run ./waf configure which gives the
following results:


Murray py2cairo-1.10.0 # ./waf configure
  ./options()
Setting top to                           : /opt/py2cairo-1.10.0
Setting out to                           : /opt/py2cairo-1.10.0/build_directory
  ./configure()
Checking for 'gcc' (c compiler)          : ok
Checking for program python              : /usr/bin/python
Checking for python version              : (2, 7, 2, 'final', 0)
Checking for library python2.7           : yes
Checking for program python2.7-config    : /usr/bin/python2.7-config
Checking for header Python.h             : yes
Checking for program pkg-config          : /usr/bin/pkg-config
Checking for 'cairo' &amp;gt;= 1.10.0           : yes
Configuration:
PREFIX                                   : /usr/local
LIBDIR                                   : /usr/local/lib
'configure' finished successfully (0.984s)

Clearly the version that cairo is compiling against is python2.7 and
my PyUnicodeUCS4_AsUTF8String error is against Python2.6.

But when I run waf with python2.6 it appears to compile against python2.7:


Murray py2cairo-1.10.0 # python2.6 waf install
  ./options()
Waf: Entering directory `/opt/py2cairo-1.10.0/build_directory'
  ./build()
  src/build()
- install /usr/local/include/pycairo/pycairo.h (from src/pycairo.h)
[ 2/12] subst: pycairo.pc.in -&amp;gt; pycairo.pc
+ install /usr/local/lib/python2.7/site-packages/cairo/_cairo.so (from
build_directory/src/_cairo.so)
+ install /usr/local/lib/pkgconfig/pycairo.pc (from pycairo.pc)
Waf: Leaving directory `/opt/py2cairo-1.10.0/build_directory'
- install /usr/local/lib/python2.7/site-packages/cairo/__init__.py
(from src/__init__.py)
+ byte compiling '/usr/local/lib/python2.7/site-packages/cairo/__init__.py'
'install' finished successfully (0.318s)

How do I compile Cairo against the correct Unicode version?

Kind Regards,

Dave Coventry
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>Dave Coventry</dc:creator>
    <dc:date>2012-05-16T21:07:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22684">
    <title>Cairo &amp; pixman on PPC</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22684</link>
    <description>&lt;pre&gt;I finally got to bulding pixman 0.24 and cairo 1.10 on PowerPC (MacOS
10.4 SDK) - we've been using an old version until now.

A few issues popped up:

1. configure scripts for both pixman and cairo choke on linker warnings.
they seem to treat warnings like errors and fail any tests that rely on
those. It seems that *any* linker output is treated as an error. As a
result, testing for pthreads fails when linker comes up with an
unrelated warning. In particular, this makes pixman build without
"thread local" support (which otherwise is provided by
pthread_setspecific) and cairo not build at all if threading support is
requested. Pthreads are fully available on PowerPC MacOS.

2. Cairo seems to select "intel atomic primitives" on any platform where
it is built with GCC. I get this defined both on PPC and on ARM. It
definitely does not work on ARM/iOS and probably not on PowerPC Mac
either. Configure really should limit this define to true Intel systems.

3. There is a warning related to __visibility__ hidden attribute, as
used in cairo-compiler-private.h - this attribute does not work on
PowerPC Mac, evidently. The define depends only on version  GCC and
__APPLE__, probably should depend on apple and !powerpc.


--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>cu</dc:creator>
    <dc:date>2012-05-16T03:31:38</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22682">
    <title>Invitation to connect on LinkedIn</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22682</link>
    <description>&lt;pre&gt;LinkedIn
------------




    A K M Mokaddim requested to add you as a connection on LinkedIn:
  

------------------------------------------

Handi,

I'd like to add you to my professional network on LinkedIn.

- A K M

Accept invitation from A K M Mokaddim
http://www.linkedin.com/e/g26k41-h29cy1nc-3l/dK2XirLQNJ5ueZs9zK2zeNLI9nOZeabianRv/blk/I252689886_55/1BpC5vrmRLoRZcjkkZt5YCpnlOt3RApnhMpmdzgmhxrSNBszYRdlYSe3wVe3oOdj99bPBfpmRBtn5PbP8VdjoPcPwUcj8LrCBxbOYWrSlI/EML_comm_afe/?hs=false&amp;amp;tok=1d20PTcRBP2Rg1

View invitation from A K M Mokaddim
http://www.linkedin.com/e/g26k41-h29cy1nc-3l/dK2XirLQNJ5ueZs9zK2zeNLI9nOZeabianRv/blk/I252689886_55/3kRnPoUe3AUdz8RcAALqnpPbOYWrSlI/svi/?hs=false&amp;amp;tok=0vePwI1FFP2Rg1

------------------------------------------

Why might connecting with A K M Mokaddim be a good idea?

A K M Mokaddim's connections could be useful to you:

After accepting A K M Mokaddim's invitation, check A K M Mokaddim's connections to see who else you may know and who you might want an introduction to. Building these connections can create opportunities in the future.
 
&lt;/pre&gt;</description>
    <dc:creator>A K M Mokaddim via LinkedIn</dc:creator>
    <dc:date>2012-05-15T19:31:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22681">
    <title>[cairo-announce] [ANNOUNCE] pixman release 0.25.6 nowavailable</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22681</link>
    <description>&lt;pre&gt;A new pixman release 0.25.6 is now available. This is a release
candidate for a stable 0.26.0 release.

This release contains a number of improvements to the Loongson and iwMMX
backends thanks to Matt Turner.

[ The 0.25.4 release that was just announced was generated from a master
  branch that wasn't up to date, so it doesn't correspond to any git
  commit id and doesn't have a tag. The 0.25.6 release is essentially
  identical code-wise. 
]

Soren


tar.gz:
http://cairographics.org/snapshots/pixman-0.25.6.tar.gz
http://xorg.freedesktop.org/archive/individual/lib/pixman-0.25.6.tar.gz

tar.bz2:
http://xorg.freedesktop.org/archive/individual/lib/pixman-0.25.6.tar.bz2

Hashes:
MD5:  de1adeb2f60e0058c6ce2f88cabfe86a  pixman-0.25.6.tar.gz
MD5:  f0c196edce9cb7e1ead79c4337f5d914  pixman-0.25.6.tar.bz2
SHA1: ebd1b438a28aca0099777b1e383c60d4fcb88196  pixman-0.25.6.tar.gz
SHA1: e05dae328ff58836a167a3409be7df98bba38f09  pixman-0.25.6.tar.bz2

GPG signature:
http://cairographics.org/snapshots/pixman-0.25.6.tar.gz.sha1.asc
(signed by Søren Sandmann Pedersen &amp;lt;sandmann&amp;lt; at &amp;gt;daimi.au.dk&amp;gt;)

Git:
git://git.freedesktop.org/git/pixman
tag: pixman-0.25.6

Log:
Chun-wei Fan (1):
      Just include xmmintrin.h on MSVC as well

Jeremy Huddleston (6):
      Revert "Disable MMX when Clang is being used."
      Silence a warning about unused pixman_have_mmx
      Disable MMX when incompatible clang is being used.
      Expand TLS support beyond __thread to __declspec(thread)
      Fix a false-negative in MMX check
      configure.ac: Fix a copy-paste-o in TLS detection

Matt Turner (26):
      Use AC_LANG_SOURCE for DSPr2 configure program
      mmx: enable over_n_0565 for b5g6r5
      mmx: Use force_inline instead of __inline__ (bug 46906)
      configure.ac: require &amp;gt;= gcc-4.5 for ARM iwMMXt
      mmx: fix _mm_shuffle_pi16 function when compiling without optimization
      configure.ac: fix iwMMXt/gcc version error message
      mmx: add store function and use it in add_8888_8888
      mmx: add load function and use it in add_8888_8888
      mmx: make ldq_u take __m64* directly
      mmx: compile on MIPS for Loongson MMI optimizations
      mmx: remove unnecessary uint64_t&amp;lt;-&amp;gt;__m64 conversions
      mmx: simplify srcsrcsrcsrc calculation in over_n_8_0565
      mmx: introduce is_equal, is_opaque, and is_zero functions
      mmx: don't pack and unpack src unnecessarily
      mmx: Use Loongson pinsrh instruction in pack_565
      mmx: Use Loongson pextrh instruction in expand565
      mmx: add r5g6b5 fetcher
      mmx: add a8 fetcher
      mmx: add x8f8g8b8 fetcher
      mmx: add src_8888_0565
      mmx: Use wpackhus in src_x888_0565 on iwMMXt
      .gitignore: add demos/checkerboard and demos/quad2quad
      configure.ac: make -march=loongson2f come before CFLAGS
      mmx: add and use pack_4x565 function
      configure.ac: Fix loongson-mmi out-of-tree builds
      configure.ac: Rename loongson -&amp;gt; loongson-mmi

Nemanja Lukic (2):
      MIPS: DSPr2: Added over_n_8888_8888_ca and over_n_8888_0565_ca fast paths
      MIPS: DSPr2: Added over_n_8_8888 and over_n_8_0565 fast paths.

Søren Sandmann Pedersen (16):
      Post-release version bump to 0.25.3
      Use "=a" and "=d" constraints for rdtsc inline assembly
      demos: Add quad2quad program
      demos: Add checkerboard demo
      composite-test.c: Use similar gradient to the one in the PDF spec.
      composite-test.c: Add a parrot image
      Add the original parrot image.
      Rename fast_composite_add_1000_1000 to _add_1_1()
      gtk-utils.c: Don't include pixman-private.h
      test/utils.c: Rename and export the pngify_pixels() function.
      gtk-utils.c: In pixbuf_from_argb32() use a8r8g8b8_to_rgba_np()
      test/utils.c: Clip values to the [0, 255] interval
      bits_image_fetch_pixel_convolution(): Make sure channels are signed
      Add Makefile.win32 and Makefile.win32.common to EXTRA_DIST
      demos/Makefile.am: Add parrot.c to EXTRA_DIST
      Pre-release version bump to 0.25.6
_______________________________________________
cairo-announce mailing list
cairo-announce&amp;lt; at &amp;gt;lists.cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo-announce
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo&lt;/pre&gt;</description>
    <dc:creator>Søren Sandmann</dc:creator>
    <dc:date>2012-05-15T17:34:26</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22680">
    <title>[cairo-announce] [ANNOUNCE] pixman release 0.25.4 nowavailable</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22680</link>
    <description>&lt;pre&gt;A new pixman release 0.25.4 is now available. This is a release
candidate for a stable 0.26.0 release.

This release contains a number of improvements to the Loongson and iwMMX
backends thanks to Matt Turner.

Søren


tar.gz:
http://cairographics.org/snapshots/pixman-0.25.4.tar.gz
http://xorg.freedesktop.org/archive/individual/lib/pixman-0.25.4.tar.gz

tar.bz2:
http://xorg.freedesktop.org/archive/individual/lib/pixman-0.25.4.tar.bz2

Hashes:
MD5:  8cd825148adc33dfeb899bb2b2a325f3  pixman-0.25.4.tar.gz
MD5:  1a9591a814cdad14db9868a42261f255  pixman-0.25.4.tar.bz2
SHA1: f5304bb3bf9e23bd1f56b449659c56e22babb5a4  pixman-0.25.4.tar.gz
SHA1: 88d852eaa05aee61cd1b7380ade7b0b0701a30fd  pixman-0.25.4.tar.bz2

GPG signature:
http://cairographics.org/snapshots/pixman-0.25.4.tar.gz.sha1.asc
(signed by Søren Sandmann Pedersen &amp;lt;sandmann&amp;lt; at &amp;gt;daimi.au.dk&amp;gt;)

Git:
git://git.freedesktop.org/git/pixman
tag: pixman-0.25.4

Log:
Chun-wei Fan (1):
      Just include xmmintrin.h on MSVC as well

Jeremy Huddleston (6):
      Revert "Disable MMX when Clang is being used."
      Silence a warning about unused pixman_have_mmx
      Disable MMX when incompatible clang is being used.
      Expand TLS support beyond __thread to __declspec(thread)
      Fix a false-negative in MMX check
      configure.ac: Fix a copy-paste-o in TLS detection

Matt Turner (24):
      Use AC_LANG_SOURCE for DSPr2 configure program
      mmx: enable over_n_0565 for b5g6r5
      mmx: Use force_inline instead of __inline__ (bug 46906)
      configure.ac: require &amp;gt;= gcc-4.5 for ARM iwMMXt
      mmx: fix _mm_shuffle_pi16 function when compiling without optimization
      configure.ac: fix iwMMXt/gcc version error message
      mmx: add store function and use it in add_8888_8888
      mmx: add load function and use it in add_8888_8888
      mmx: make ldq_u take __m64* directly
      mmx: compile on MIPS for Loongson MMI optimizations
      mmx: remove unnecessary uint64_t&amp;lt;-&amp;gt;__m64 conversions
      mmx: simplify srcsrcsrcsrc calculation in over_n_8_0565
      mmx: introduce is_equal, is_opaque, and is_zero functions
      mmx: don't pack and unpack src unnecessarily
      mmx: Use Loongson pinsrh instruction in pack_565
      mmx: Use Loongson pextrh instruction in expand565
      mmx: add r5g6b5 fetcher
      mmx: add a8 fetcher
      mmx: add x8f8g8b8 fetcher
      mmx: add src_8888_0565
      mmx: Use wpackhus in src_x888_0565 on iwMMXt
      .gitignore: add demos/checkerboard and demos/quad2quad
      configure.ac: make -march=loongson2f come before CFLAGS
      mmx: add and use pack_4x565 function

Nemanja Lukic (2):
      MIPS: DSPr2: Added over_n_8888_8888_ca and over_n_8888_0565_ca fast paths
      MIPS: DSPr2: Added over_n_8_8888 and over_n_8_0565 fast paths.

Søren Sandmann Pedersen (15):
      Post-release version bump to 0.25.3
      Use "=a" and "=d" constraints for rdtsc inline assembly
      demos: Add quad2quad program
      demos: Add checkerboard demo
      composite-test.c: Use similar gradient to the one in the PDF spec.
      composite-test.c: Add a parrot image
      Add the original parrot image.
      Rename fast_composite_add_1000_1000 to _add_1_1()
      gtk-utils.c: Don't include pixman-private.h
      test/utils.c: Rename and export the pngify_pixels() function.
      gtk-utils.c: In pixbuf_from_argb32() use a8r8g8b8_to_rgba_np()
      test/utils.c: Clip values to the [0, 255] interval
      bits_image_fetch_pixel_convolution(): Make sure channels are signed
      Add Makefile.win32 and Makefile.win32.common to EXTRA_DIST
      Pre-release version bump to 0.25.4
_______________________________________________
cairo-announce mailing list
cairo-announce&amp;lt; at &amp;gt;lists.cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo-announce
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo&lt;/pre&gt;</description>
    <dc:creator>Søren Sandmann</dc:creator>
    <dc:date>2012-05-15T16:55:47</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22679">
    <title>Invitation to connect on LinkedIn</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22679</link>
    <description>&lt;pre&gt;LinkedIn
------------




    Uray Meiviar requested to add you as a connection on LinkedIn:
  

------------------------------------------

Handi,

I'd like to add you to my professional network on LinkedIn.

- Uray

Accept invitation from Uray Meiviar
http://www.linkedin.com/e/g26k41-h26ecpek-5d/dK2XirLQNJ5ueZs9zK2zeNLI9nOZeabianRv/blk/I251193654_55/1BpC5vrmRLoRZcjkkZt5YCpnlOt3RApnhMpmdzgmhxrSNBszYRdlYQdjoPej4Ndj99bThCnR1Eu4d3bPkPcPkRe3cVd38LrCBxbOYWrSlI/EML_comm_afe/?hs=false&amp;amp;tok=3AOLicjJnb_Rc1

View invitation from Uray Meiviar
http://www.linkedin.com/e/g26k41-h26ecpek-5d/dK2XirLQNJ5ueZs9zK2zeNLI9nOZeabianRv/blk/I251193654_55/3kRnPgRdzcVcj4RcAALqnpPbOYWrSlI/svi/?hs=false&amp;amp;tok=1dF69HDfnb_Rc1

------------------------------------------

Why might connecting with Uray Meiviar be a good idea?

Uray Meiviar's connections could be useful to you:

After accepting Uray Meiviar's invitation, check Uray Meiviar's connections to see who else you may know and who you might want an introduction to. Building these connections can create opportunities in the future.
 
&lt;/pre&gt;</description>
    <dc:creator>Uray Meiviar via LinkedIn</dc:creator>
    <dc:date>2012-05-13T17:47:38</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22671">
    <title>question on cairo, opengl and x-window</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22671</link>
    <description>&lt;pre&gt;Hi,

We have a software that uses cairo and X window system. The old design is
using several X windows, several of them are transparent. We use Cairo to
draw
image, curves and text annotation.

The design with several X windows causes us some problems when we move to a
newer version of Linux. It also has lots of trouble with Xming X window
manager.
We are thinking about a new design with just one X window. The image
display part is already moved to OpenGL (for better performance reason). I
am thinking about
still keep our old cairo codes for text annotation, but avoiding a separate
X window.

The old logic:

from X window, create_cairo_context.
from a transparent png file, create a surface.
set the surface to cairo context
then draw things on cairo context

If I want to just use one X window (this window already has OpenGL context
in it). Is the solution this way?

new logic:
create a cairo context without any X window (?).
png file to surface.
set the surface to cairo context
then draw things on cairo context
get the drawing result back to memory.
then use OpenGL to render it to hardware.


I am wondering whether new logic is possible? Will all the cairo rendering
all done in software without hardware acceleration, versus old logic has?
If without HW acceleration, I will only
be able to keep cairo for non real time drawing.
Any better way to link OpenGL and cairo together? Like user still uses
cairo API to draw, but it is actually drawing using hardware (openGL), in a
specify depth, and
with the opacity setting that I can control?

Your advise is appreciated.

Thanks,
Guo
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo&lt;/pre&gt;</description>
    <dc:creator>Guo Tang</dc:creator>
    <dc:date>2012-05-11T19:04:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22664">
    <title>RecordingSurface based patterns rasterized when painted tovector surface?</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22664</link>
    <description>&lt;pre&gt;I'm working on a new feature for Firefox. I've got a PDFSurface and create a similar surface. This gives me back a RecordingSurface. I perform some drawing operations agains the recording surface. Then, a pattern is created based on the recording surface (using |mPattern = cairo_pattern_create_for_surface(RecordingSurface)|) and the pattern is drawn to the PDFSurface (using |cairo_set_source(PDFSurfaceCairo, mPattern); cairo_paint_with_alpha(PDFSurfaceCairo, alpha);|) . The output of the recording surface appears to be rasterized in the final PDF. 

Currently, I'm not 100% sure if this is the problem, but does Cairo rasterize a recording surface when used as pattern and this gets drawn to a PDFSurface?

Thanks and best regards,

Julian Viereck
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo

&lt;/pre&gt;</description>
    <dc:creator>Julian Viereck</dc:creator>
    <dc:date>2012-05-10T12:12:25</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22659">
    <title>minimal cairo drawing loop</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22659</link>
    <description>&lt;pre&gt;Hello everyone,

just looking for a simple c code to create a minimal drawing loop.

What i want to get is the following.

Load an image
create a surface where to draw

draw lines on the surface
clear the drawing area without cancelling the background image
draw again


eventually, is it possible to use two surface and swap the surface in a
similar way of the double buffering technique?

thank you very much.
--
cairo mailing list
cairo&amp;lt; at &amp;gt;cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo&lt;/pre&gt;</description>
    <dc:creator>Davide Calaminici</dc:creator>
    <dc:date>2012-05-08T08:35:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.cairo/22654">
    <title>[Patch] Fix some "Since:" tag and check-doc-syntax oddities</title>
    <link>http://comments.gmane.org/gmane.comp.lib.cairo/22654</link>
    <description>&lt;pre&gt;Hi,

today I accidentally stumbled upon a double "Since:" tag for
cairo_surface_set_mime_data(). Attached are the patches that resulted from this.

Anyone wants to take a look? :-)

Uli
&lt;/pre&gt;</description>
    <dc:creator>Uli Schlachter</dc:creator>
    <dc:date>2012-05-06T20:45:43</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lib.cairo">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lib.cairo</link>
  </textinput>
</rdf:RDF>

