On Tue, Nov 3, 2015 at 11:43 AM, boombatower <ji...@boombatower.com> wrote:
> - env GALLIUM_HUD_VISIBLE: control default visibility
> - env GALLIUM_HUD_SIGNAL_TOGGLE: toggle visibility via signal
> ---
>  docs/envvars.html                       |  6 ++++++
>  src/gallium/auxiliary/hud/hud_context.c | 23 +++++++++++++++++++++++
>  2 files changed, 29 insertions(+)
>
> diff --git a/docs/envvars.html b/docs/envvars.html
> index bdfe999..530bbb7 100644
> --- a/docs/envvars.html
> +++ b/docs/envvars.html
> @@ -179,6 +179,12 @@ Mesa EGL supports different sets of environment 
> variables.  See the
>  <li>GALLIUM_HUD - draws various information on the screen, like framerate,
>      cpu load, driver statistics, performance counters, etc.
>      Set GALLIUM_HUD=help and run e.g. glxgears for more info.
> +<li>GALLIUM_HUD_VISIBLE - control default visibility, defaults to true.
> +<li>GALLIUM_HUD_TOGGLE_SIGNAL - toggle visibility via user specified signal.
> +    Especially useful to toggle hud at specific points of application and
> +    disable for unencumbered viewing the rest of the time. For example, set
> +    GALLIUM_HUD_VISIBLE to false and GALLIUM_HUD_SIGNAL_TOGGLE to 10 
> (SIGUSR1).
> +    Use kill -10 <pid> to toggle the hud as desired.
>  <li>GALLIUM_LOG_FILE - specifies a file for logging all errors, warnings, 
> etc.
>      rather than stderr.
>  <li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment
> diff --git a/src/gallium/auxiliary/hud/hud_context.c 
> b/src/gallium/auxiliary/hud/hud_context.c
> index ffe30b8..f6bfa80 100644
> --- a/src/gallium/auxiliary/hud/hud_context.c
> +++ b/src/gallium/auxiliary/hud/hud_context.c
> @@ -33,6 +33,7 @@
>   * Set GALLIUM_HUD=help for more info.
>   */
>
> +#include <signal.h>
>  #include <stdio.h>
>
>  #include "hud/hud_context.h"
> @@ -51,8 +52,10 @@
>  #include "tgsi/tgsi_text.h"
>  #include "tgsi/tgsi_dump.h"
>
> +static boolean __visible_toggle = false;
>
>  struct hud_context {
> +   boolean visible;
>     struct pipe_context *pipe;
>     struct cso_context *cso;
>     struct u_upload_mgr *uploader;
> @@ -95,6 +98,11 @@ struct hud_context {
>     } text, bg, whitelines;
>  };
>
> +static void
> +signal_visible_handler(int signo)
> +{
> +   __visible_toggle = true;
> +}
>
>  static void
>  hud_draw_colored_prims(struct hud_context *hud, unsigned prim,
> @@ -431,8 +439,15 @@ hud_alloc_vertices(struct hud_context *hud, struct 
> vertex_queue *v,
>  void
>  hud_draw(struct hud_context *hud, struct pipe_resource *tex)
>  {
> +   if (__visible_toggle) {
> +      hud->visible = !hud->visible;
> +      __visible_toggle = false;

Could we either
- not use global variables
or
- not modify global variables from any context functions.

There can be several contexts and therefore several HUDs per process.
This patch doesn't take that into account.

Marek
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to