Brian,

I'm curious why debug enabled libmetacity can't cause a crash and why 
crash doesn't happen on SPARC.
Your fix may work well but it's not explanation of the reason to me.

Thanks,
lin

Brian Cameron wrote:
>
> I found that the appearance bug reappeared in vermillion-devel 90, and
> disabling mediaLib had no affect on things.  So my previous patch
> to workaround the problem just hid the issue in vermillion-devel 89.
>
> Doing further research, it turns out that the problem was caused
> by the metacity-08-trusted-extensions.diff file not setting
> fgeom->height when TSOL isn't being used.
>
> Since the affected patch is huge, and the change is small, I'll just
> explain my change rather than showing a diff file.
>
> I changed this hunk of the patch:
>
> ----
>
> @@ -621,8 +626,16 @@
>      fgeom->top_height + fgeom->bottom_height;
>
>    fgeom->width = width;
> +#ifdef BUILD_TX_CODE
> +#ifdef HAVE_XTSOL
> +  if (tsol_is_available ())
> +    fgeom->height = height + fgeom->top_height; /*Trusted Frame 
> Layout Modifica
> tion TFLM*/
> +  else
>    fgeom->height = height;
> -
> +#else
> +  fgeom->height = height;
> +#endif
> +#endif
>    fgeom->top_titlebar_edge = layout->title_border.top;
>    fgeom->bottom_titlebar_edge = layout->title_border.bottom;
>    fgeom->left_titlebar_edge = layout->left_titlebar_edge;
>
> ----
>
> Note that fgeom->height never gets set if BUILD_TX_CODE is not TRUE.
>
> So I changed it to the following code, which always sets fgeom->height
> to height, and then resets it to the appropriate TSOL value if the
> #defines and if-test pass.  I think this code is a bit more simple
> than dealing with so many embedded #else statements.
>
> ----
>
> @@ -622,7 +627,12 @@ meta_frame_layout_calc_geometry (const M
>
>    fgeom->width = width;
>    fgeom->height = height;
> -
> +#ifdef BUILD_TX_CODE
> +#ifdef HAVE_XTSOL
> +  if (tsol_is_available ())
> +    fgeom->height = height + fgeom->top_height; /*Trusted Frame 
> Layout Modifica
> tion TFLM*/
> +#endif
> +#endif
>    fgeom->top_titlebar_edge = layout->title_border.top;
>    fgeom->bottom_titlebar_edge = layout->title_border.bottom;
>    fgeom->left_titlebar_edge = layout->left_titlebar_edge;
>
>
>
> ---
>
> Brian

-- 
x82120 / +86 10 82618200


Reply via email to