From: José Fonseca Date: Tue, 17 May 2011 08:58:42 +0000 (+0100) Subject: Don't count frames in MakeCurrent if the context/drawable don't change. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=354beb21db176d548a0662c5083bdd6ad8bdaeda;p=apitrace Don't count frames in MakeCurrent if the context/drawable don't change. --- diff --git a/glretrace_glx.cpp b/glretrace_glx.cpp index 463de0a..7edcfa0 100644 --- a/glretrace_glx.cpp +++ b/glretrace_glx.cpp @@ -72,6 +72,13 @@ static void retrace_glXDestroyContext(Trace::Call &call) { } static void retrace_glXMakeCurrent(Trace::Call &call) { + glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt()); + glws::Context *new_context = context_map[call.arg(2).toPointer()]; + + if (new_drawable == drawable && new_context == context) { + return; + } + if (drawable && context) { glFlush(); if (!double_buffer) { @@ -79,9 +86,6 @@ static void retrace_glXMakeCurrent(Trace::Call &call) { } } - glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt()); - glws::Context *new_context = context_map[call.arg(2).toPointer()]; - bool result = ws->makeCurrent(new_drawable, new_context); if (new_drawable && new_context && result) { @@ -187,6 +191,13 @@ static void retrace_glXCreateNewContext(Trace::Call &call) { } static void retrace_glXMakeContextCurrent(Trace::Call &call) { + glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt()); + glws::Context *new_context = context_map[call.arg(3).toPointer()]; + + if (new_drawable == drawable && new_context == context) { + return; + } + if (drawable && context) { glFlush(); if (!double_buffer) { @@ -194,9 +205,6 @@ static void retrace_glXMakeContextCurrent(Trace::Call &call) { } } - glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt()); - glws::Context *new_context = context_map[call.arg(3).toPointer()]; - bool result = ws->makeCurrent(new_drawable, new_context); if (new_drawable && new_context && result) {