+ if (!PyArg_ParseTuple(args, "I", &ctx))
+ return NULL;
+
+ ctx = vc_ctx_create(ctx);
+ if (ctx == VC_NOCTX && errno != EEXIST) {
+ return PyErr_SetFromErrno(PyExc_OSError);
+ }
+
+ if (vc_set_ccaps(ctx, &caps) == -1) {
+ return PyErr_SetFromErrno(PyExc_OSError);
+ }
+
+ if (vc_set_cflags(ctx, &flags) == -1) {
+ return PyErr_SetFromErrno(PyExc_OSError);
+ }
+
+ /* context already exists, migrate to it */
+ if (ctx == VC_NOCTX && vc_ctx_migrate(ctx) == -1) {
+ return PyErr_SetFromErrno(PyExc_OSError);
+ }
+
+ return Py_None;