Ejemplo n.º 1
0
Archivo: client.c Proyecto: kvap/raft
static bool query(Message *msg, Message *answer, int timeout_ms) {
	timeout_t timeout;
	if (timeout_ms < 0) {
		while (true) {
			timeout_start(&timeout, 100);

			if (try_query(msg, answer, &timeout)) {
				return true;
			} else {
				disconnect_leader();
			}
		}
	} else {
		timeout_start(&timeout, timeout_ms);

		TIMEOUT_LOOP_START(&timeout); {
			if (try_query(msg, answer, &timeout)) {
				return true;
			} else {
				disconnect_leader();
			}
		} TIMEOUT_LOOP_END(&timeout);
	}

	shout("query failed after %d ms\n", timeout_elapsed_ms(&timeout));
	return false;
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
	bool pass = true;
	GLXContext ctx;

	GLX_EXT_import_context_setup();

	/* Try the simple stuff.
	 */
	pass = try_query(indirectCtx,
			 GLX_SHARE_CONTEXT_EXT, "GLX_SHARE_CONTEXT_EXT",
			 Success, 0)
		&& pass;
	pass = try_query(indirectCtx,
			 GLX_SCREEN_EXT, "GLX_SCREEN_EXT",
			 Success, DefaultScreen(dpy))
		&& pass;
	pass = try_query(indirectCtx,
			 GLX_VISUAL_ID_EXT, "GLX_VISUAL_ID_EXT",
			 Success, visinfo->visualid)
		&& pass;
	pass = try_query(indirectCtx,
			 0xffff0000, "0xffff0000 (invalid)",
			 GLX_BAD_ATTRIBUTE, 0)
		&& pass;

	/* Create a second indirect-rendering context, and have it share the
	 * first indirect-rendering context.  The XID of the share conext for
	 * the original context should be unchanged.
	 */
	ctx = glXCreateContext(dpy, visinfo, indirectCtx, False);
	assert(ctx != NULL);

	pass = try_query(indirectCtx,
			 GLX_SHARE_CONTEXT_EXT, "GLX_SHARE_CONTEXT_EXT",
			 Success, 0)
		&& pass;
	pass = try_query(ctx,
			 GLX_SHARE_CONTEXT_EXT, "GLX_SHARE_CONTEXT_EXT",
			 Success, glXGetContextIDEXT(indirectCtx))
		&& pass;

	if (piglit_is_glx_extension_supported(dpy, "GLX_SGIX_fbconfig")) {
		pass = try_query(indirectCtx,
				 GLX_FBCONFIG_ID_SGIX, "GLX_FBCONFIG_ID_SGIX",
				 Success, 0)
			&& pass;
	}

	GLX_EXT_import_context_teardown();

	piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
	return 0;
}