[Mesa-dev] [PATCH] intel/tools: fix initial position of window in aubinator viewer

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Sep 11 12:28:26 UTC 2018


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 11/09/2018 08:32, Tapani Pälli wrote:
> Currently position is set before widgets are sized by gtk and
> calculation can get wrong results where window is positioned
> offscreen. Patch fixes this by setting aubfile window position
> as 0,0 only when size_allocate has been called to the widget.
>
> Now window is always positioned to 0,0 if imgui.ini is missing.
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
>   src/intel/tools/aubinator_viewer.cpp | 21 +++++++++++++++++----
>   1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/src/intel/tools/aubinator_viewer.cpp b/src/intel/tools/aubinator_viewer.cpp
> index e29bccb192a..d5d289032e8 100644
> --- a/src/intel/tools/aubinator_viewer.cpp
> +++ b/src/intel/tools/aubinator_viewer.cpp
> @@ -1050,8 +1050,7 @@ show_aubfile_window(void)
>   
>      list_inithead(&window->parent_link);
>      window->size = ImVec2(-1, 250);
> -   window->position =
> -      ImVec2(0, ImGui::GetIO().DisplaySize.y - window->size.y);
> +   window->position = ImVec2(0, 0);
>      window->opened = true;
>      window->display = display_aubfile_window;
>      window->destroy = NULL;
> @@ -1143,6 +1142,21 @@ unrealize_area(GtkGLArea *area)
>      ImGui::DestroyContext();
>   }
>   
> +static void
> +size_allocate_area(GtkGLArea *area,
> +                   GdkRectangle *allocation,
> +                   gpointer user_data)
> +{
> +   if (!gtk_widget_get_realized(GTK_WIDGET(area)))
> +      return;
> +
> +   /* We want to catch only initial size allocate. */
> +   g_signal_handlers_disconnect_by_func(area,
> +                                        (gpointer) size_allocate_area,
> +                                        user_data);
> +   show_aubfile_window();
> +}
> +
>   static void
>   print_help(const char *progname, FILE *file)
>   {
> @@ -1198,12 +1212,11 @@ int main(int argc, char *argv[])
>      g_signal_connect(gl_area, "render", G_CALLBACK(repaint_area), NULL);
>      g_signal_connect(gl_area, "realize", G_CALLBACK(realize_area), NULL);
>      g_signal_connect(gl_area, "unrealize", G_CALLBACK(unrealize_area), NULL);
> +   g_signal_connect(gl_area, "size_allocate", G_CALLBACK(size_allocate_area), NULL);
>      gtk_container_add(GTK_CONTAINER(context.gtk_window), gl_area);
>   
>      gtk_widget_show_all(context.gtk_window);
>   
> -   show_aubfile_window();
> -
>      gtk_main();
>   
>      free(context.xml_path);




More information about the mesa-dev mailing list