diff options
| -rw-r--r-- | src/core/constraints.c | 21 | ||||
| -rw-r--r-- | src/core/effects.c | 8 | ||||
| -rw-r--r-- | src/core/place.c | 8 | ||||
| -rw-r--r-- | src/core/screen.c | 9 | ||||
| -rw-r--r-- | src/core/window.c | 14 | ||||
| -rw-r--r-- | src/ui/draw-workspace.c | 8 | ||||
| -rw-r--r-- | src/ui/gradient.c | 43 | ||||
| -rw-r--r-- | src/ui/theme.c | 24 | ||||
| -rw-r--r-- | src/wm-tester/test-gravity.c | 4 | 
9 files changed, 73 insertions, 66 deletions
| diff --git a/src/core/constraints.c b/src/core/constraints.c index a89ef138..e95dec03 100644 --- a/src/core/constraints.c +++ b/src/core/constraints.c @@ -541,15 +541,15 @@ place_window_if_needed(MetaWindow     *window,             */            if (info->current.width >= info->work_area_xinerama.width)              { -              info->current.width = .75 * info->work_area_xinerama.width; +              info->current.width = (int) (.75 * (double) info->work_area_xinerama.width);                info->current.x = info->work_area_xinerama.x + -                       .125 * info->work_area_xinerama.width; +                                (int) (.125 * (double) info->work_area_xinerama.width);              }            if (info->current.height >= info->work_area_xinerama.height)              { -              info->current.height = .75 * info->work_area_xinerama.height; +              info->current.height = (int) (.75 * (double) info->work_area_xinerama.height);                info->current.y = info->work_area_xinerama.y + -                       .083 * info->work_area_xinerama.height; +                                (int) (.083 * (double) info->work_area_xinerama.height);              }            if (window->maximize_horizontally_after_placement || @@ -1225,7 +1225,8 @@ constrain_aspect_ratio (MetaWindow         *window,  {    double minr, maxr;    gboolean constraints_are_inconsistent, constraint_already_satisfied; -  int fudge, new_width, new_height; +  int fudge; +  double new_width, new_height;    double best_width, best_height;    double alt_width, alt_height;    MetaRectangle *start_rect; @@ -1286,20 +1287,18 @@ constrain_aspect_ratio (MetaWindow         *window,      return constraint_already_satisfied;    /*** Enforce constraint ***/ -  new_width = info->current.width; -  new_height = info->current.height; +  new_width = (double) info->current.width; +  new_height = (double) info->current.height;    switch (info->resize_gravity)      {      case WestGravity:      case EastGravity: -      /* Yeah, I suck for doing implicit rounding -- sue me */        new_height = CLAMP (new_height, new_width / maxr,  new_width / minr);        break;      case NorthGravity:      case SouthGravity: -      /* Yeah, I suck for doing implicit rounding -- sue me */        new_width  = CLAMP (new_width,  new_height * minr, new_height * maxr);        break; @@ -1344,8 +1343,8 @@ constrain_aspect_ratio (MetaWindow         *window,    meta_rectangle_resize_with_gravity (start_rect,                                        &info->current,                                        info->resize_gravity, -                                      new_width, -                                      new_height); +                                      (int) new_width, +                                      (int) new_height);    return TRUE;  } diff --git a/src/core/effects.c b/src/core/effects.c index 6c0f7fdd..1ca9f349 100644 --- a/src/core/effects.c +++ b/src/core/effects.c @@ -371,10 +371,10 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context)    draw_rect = context->start_rect;    /* Now add a delta proportional to elapsed time. */ -  draw_rect.x += (context->end_rect.x - context->start_rect.x) * fraction; -  draw_rect.y += (context->end_rect.y - context->start_rect.y) * fraction; -  draw_rect.width += (context->end_rect.width - context->start_rect.width) * fraction; -  draw_rect.height += (context->end_rect.height - context->start_rect.height) * fraction; +  draw_rect.x += (int) (fraction * (double) (context->end_rect.x - context->start_rect.x)); +  draw_rect.y += (int) (fraction * (double) (context->end_rect.y - context->start_rect.y)); +  draw_rect.width += (int) (fraction * (double) (context->end_rect.width - context->start_rect.width)); +  draw_rect.height += (int) (fraction * (double) (context->end_rect.height - context->start_rect.height));    /* don't confuse X or gdk-pixbuf with bogus rectangles */    if (draw_rect.width < 1) diff --git a/src/core/place.c b/src/core/place.c index b3fa6569..1aafff79 100644 --- a/src/core/place.c +++ b/src/core/place.c @@ -46,8 +46,8 @@ northwestcmp (gconstpointer a, gconstpointer b)  {    MetaWindow *aw = (gpointer) a;    MetaWindow *bw = (gpointer) b; -  int from_origin_a; -  int from_origin_b; +  double from_origin_a; +  double from_origin_b;    int ax, ay, bx, by;    /* we're interested in the frame position for cascading, @@ -76,8 +76,8 @@ northwestcmp (gconstpointer a, gconstpointer b)      }    /* probably there's a fast good-enough-guess we could use here. */ -  from_origin_a = sqrt (ax * ax + ay * ay); -  from_origin_b = sqrt (bx * bx + by * by); +  from_origin_a = sqrt ((double) (ax * ax + ay * ay)); +  from_origin_b = sqrt ((double) (bx * bx + by * by));    if (from_origin_a < from_origin_b)      return -1; diff --git a/src/core/screen.c b/src/core/screen.c index c5962cb2..99932393 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -1214,7 +1214,7 @@ meta_screen_update_cursor (MetaScreen *screen)  }  #define MAX_PREVIEW_SCREEN_FRACTION 0.33 -#define MAX_PREVIEW_SIZE 300 +#define MAX_PREVIEW_SIZE 300.0  static cairo_surface_t *  get_window_surface (MetaWindow *window) @@ -1222,7 +1222,8 @@ get_window_surface (MetaWindow *window)    cairo_surface_t *surface, *scaled;    cairo_t *cr;    const MetaXineramaScreenInfo *current; -  int width, height, max_columns, max_size; +  int width, height, max_columns; +  double max_size;    double ratio;    surface = meta_compositor_get_window_surface (window->display->compositor, window); @@ -1239,14 +1240,14 @@ get_window_surface (MetaWindow *window)    /* Scale surface to fit current screen */    if (width > height)      { -      max_size = MIN (MAX_PREVIEW_SIZE, current->rect.width / max_columns * MAX_PREVIEW_SCREEN_FRACTION); +      max_size = MIN (MAX_PREVIEW_SIZE, MAX_PREVIEW_SCREEN_FRACTION * ((double) current->rect.width) / ((double) max_columns));        ratio = ((double) width) / max_size;        width = (int) max_size;        height = (int) (((double) height) / ratio);      }    else      { -      max_size = MIN (MAX_PREVIEW_SIZE, current->rect.height / max_columns * MAX_PREVIEW_SCREEN_FRACTION); +      max_size = MIN (MAX_PREVIEW_SIZE, MAX_PREVIEW_SCREEN_FRACTION * ((double) current->rect.height) / ((double) max_columns));        ratio = ((double) height) / max_size;        height = (int) max_size;        width = (int) (((double) width) / ratio); diff --git a/src/core/window.c b/src/core/window.c index eef77bab..00ddd58a 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -2911,10 +2911,10 @@ static void meta_window_transform_to_monitor(MetaRectangle *target_rect,    target_rect->x -= from_monitor->x;    target_rect->y -= from_monitor->y; -  target_rect->width *= horizontal_ratio; -  target_rect->height *= vertical_ratio; -  target_rect->x *= horizontal_ratio; -  target_rect->y *= vertical_ratio; +  target_rect->width = (int) (horizontal_ratio * (double) target_rect->width); +  target_rect->height = (int) (vertical_ratio * (double) target_rect->height); +  target_rect->x = (int) (horizontal_ratio * (double) target_rect->x); +  target_rect->y = (int) (vertical_ratio * (double) target_rect->y);    target_rect->x += to_monitor->x;    target_rect->y += to_monitor->y; @@ -7174,7 +7174,7 @@ meta_window_titlebar_is_onscreen (MetaWindow *window)    gboolean       is_onscreen;    const int min_height_needed  = 8; -  const int min_width_percent  = 0.5; +  const double min_width_percent  = 0.5;    const int min_width_absolute = 50;    /* Titlebar can't be offscreen if there is no titlebar... */ @@ -7197,7 +7197,7 @@ meta_window_titlebar_is_onscreen (MetaWindow *window)        meta_rectangle_intersect (&titlebar_rect, spanning_rect, &overlap);        if (overlap.height > MIN (titlebar_rect.height, min_height_needed) && -          overlap.width  > MIN (titlebar_rect.width * min_width_percent, +          overlap.width  > MIN ((int) (min_width_percent * (double) titlebar_rect.width),                                  min_width_absolute))          {            is_onscreen = TRUE; @@ -7423,7 +7423,7 @@ update_move (MetaWindow  *window,          ((double)display->grab_initial_window_pos.width);        display->grab_initial_window_pos.x = -        x - window->saved_rect.width * prop; +        x - (int) (prop * (double) window->saved_rect.width);        display->grab_initial_window_pos.y = y;        if (window->frame) diff --git a/src/ui/draw-workspace.c b/src/ui/draw-workspace.c index fc8f82e5..c5519cae 100644 --- a/src/ui/draw-workspace.c +++ b/src/ui/draw-workspace.c @@ -46,10 +46,10 @@ get_window_rect (const WnckWindowDisplayInfo *win,    width = win->width;    height = win->height; -  x *= width_ratio; -  y *= height_ratio; -  width *= width_ratio; -  height *= height_ratio; +  x = (int) (width_ratio * (double) x); +  y = (int) (height_ratio * (double) y); +  width = (int) (width_ratio * (double) width); +  height = (int) (height_ratio * (double) height);    x += workspace_rect->x;    y += workspace_rect->y; diff --git a/src/ui/gradient.c b/src/ui/gradient.c index 7a9be6ad..a059e564 100644 --- a/src/ui/gradient.c +++ b/src/ui/gradient.c @@ -771,6 +771,7 @@ meta_gradient_create_interwoven (int            width,    unsigned char *ptr;    unsigned char *pixels;    int rowstride; +  double height_scaling;    pixbuf = blank_pixbuf (width, height);    if (pixbuf == NULL) @@ -779,25 +780,29 @@ meta_gradient_create_interwoven (int            width,    pixels = gdk_pixbuf_get_pixels (pixbuf);    rowstride = gdk_pixbuf_get_rowstride (pixbuf); -  r1 = (long)(colors1[0].red*0xffffff); -  g1 = (long)(colors1[0].green*0xffffff); -  b1 = (long)(colors1[0].blue*0xffffff); -  a1 = (long)(colors1[0].alpha*0xffffff); - -  r2 = (long)(colors2[0].red*0xffffff); -  g2 = (long)(colors2[0].green*0xffffff); -  b2 = (long)(colors2[0].blue*0xffffff); -  a2 = (long)(colors2[0].alpha*0xffffff); - -  dr1 = ((colors1[1].red-colors1[0].red)*0xffffff)/(int)height; -  dg1 = ((colors1[1].green-colors1[0].green)*0xffffff)/(int)height; -  db1 = ((colors1[1].blue-colors1[0].blue)*0xffffff)/(int)height; -  da1 = ((colors1[1].alpha-colors1[0].alpha)*0xffffff)/(int)height; - -  dr2 = ((colors2[1].red-colors2[0].red)*0xffffff)/(int)height; -  dg2 = ((colors2[1].green-colors2[0].green)*0xffffff)/(int)height; -  db2 = ((colors2[1].blue-colors2[0].blue)*0xffffff)/(int)height; -  da2 = ((colors2[1].alpha-colors2[0].alpha)*0xffffff)/(int)height; +#define RGBA_SCALING 16777215.0 /* 0xffffff */ +  r1 = (long) (colors1[0].red   * RGBA_SCALING); +  g1 = (long) (colors1[0].green * RGBA_SCALING); +  b1 = (long) (colors1[0].blue  * RGBA_SCALING); +  a1 = (long) (colors1[0].alpha * RGBA_SCALING); + +  r2 = (long) (colors2[0].red   * RGBA_SCALING); +  g2 = (long) (colors2[0].green * RGBA_SCALING); +  b2 = (long) (colors2[0].blue  * RGBA_SCALING); +  a2 = (long) (colors2[0].alpha * RGBA_SCALING); + +  height_scaling = RGBA_SCALING / (gdouble) height; + +  dr1 = (long) (colors1[1].red-colors1[0].red     * height_scaling); +  dg1 = (long) (colors1[1].green-colors1[0].green * height_scaling); +  db1 = (long) (colors1[1].blue-colors1[0].blue   * height_scaling); +  da1 = (long) (colors1[1].alpha-colors1[0].alpha * height_scaling); + +  dr2 = (long) (colors2[1].red-colors2[0].red     * height_scaling); +  dg2 = (long) (colors2[1].green-colors2[0].green * height_scaling); +  db2 = (long) (colors2[1].blue-colors2[0].blue   * height_scaling); +  da2 = (long) (colors2[1].alpha-colors2[0].alpha * height_scaling); +#undef RGBA_SCALING    for (i=0,k=0,l=0,ll=thickness1; i<height; i++)      { diff --git a/src/ui/theme.c b/src/ui/theme.c index a78f9ce2..25d35b1f 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -108,8 +108,8 @@ scale_surface (cairo_surface_t *surface,    gdouble scale_x;    gdouble scale_y;    cairo_content_t content; -  gint width; -  gint height; +  gdouble width; +  gdouble height;    cairo_surface_t *scaled;    cairo_t *cr; @@ -131,7 +131,7 @@ scale_surface (cairo_surface_t *surface,    width = ceil (new_width);    height = ceil (new_height); -  scaled = cairo_surface_create_similar (surface, content, width, height); +  scaled = cairo_surface_create_similar (surface, content, (int) width, (int) height);    cr = cairo_create (scaled);    cairo_scale (cr, scale_x, scale_y); @@ -185,7 +185,7 @@ get_surface_from_pixbuf (GdkPixbuf         *pixbuf,    width = ceil (width);    height = ceil (height); -  copy = cairo_surface_create_similar (surface, content, width, height); +  copy = cairo_surface_create_similar (surface, content, (int) width, (int) height);    cr = cairo_create (copy);    cairo_set_source_surface (cr, surface, 0, 0); @@ -779,7 +779,7 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout  *layout,      {      case META_BUTTON_SIZING_ASPECT:        button_height = borders.visible.top - layout->button_border.top - layout->button_border.bottom; -      button_width = button_height / layout->button_aspect; +      button_width = (int) (((double) button_height) / layout->button_aspect);        break;      case META_BUTTON_SIZING_FIXED:        button_width = layout->button_width; @@ -882,12 +882,12 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout  *layout,        space_used_by_buttons = 0;        space_used_by_buttons += button_width * n_left; -      space_used_by_buttons += (button_width * 0.75) * n_left_spacers; +      space_used_by_buttons += (int) (0.75 * (double) (button_width * n_left_spacers));        space_used_by_buttons += layout->button_border.left * n_left;        space_used_by_buttons += layout->button_border.right * n_left;        space_used_by_buttons += button_width * n_right; -      space_used_by_buttons += (button_width * 0.75) * n_right_spacers; +      space_used_by_buttons += (int) (0.75 * (double) (button_width * n_right_spacers));        space_used_by_buttons += layout->button_border.left * n_right;        space_used_by_buttons += layout->button_border.right * n_right; @@ -988,7 +988,7 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout  *layout,        rect = right_func_rects[i];        rect->visible.x = x - layout->button_border.right - button_width;        if (right_buttons_has_spacer[i]) -        rect->visible.x -= (button_width * 0.75); +        rect->visible.x -= (int) (0.75 * (double) button_width);        rect->visible.y = button_y;        rect->visible.width = button_width; @@ -1047,7 +1047,7 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout  *layout,        x = rect->visible.x + rect->visible.width + layout->button_border.right;        if (left_buttons_has_spacer[i]) -        x += (button_width * 0.75); +        x += (int) (0.75 * (double) button_width);        *(left_bg_rects[i]) = rect->visible;      } @@ -2880,7 +2880,7 @@ pos_eval (MetaDrawSpec              *spec,            *val_p = expr.d.int_val;            break;          case POS_EXPR_DOUBLE: -          *val_p = expr.d.double_val; +          *val_p = (int) expr.d.double_val;            break;          case POS_EXPR_OPERATOR:            g_assert_not_reached (); @@ -6234,6 +6234,7 @@ meta_gtk_widget_get_font_desc (GtkWidget *widget,  			       const PangoFontDescription *override)  {    PangoFontDescription *font_desc; +  gint font_size;    GtkStyleContext *style = gtk_widget_get_style_context (widget);    GtkStateFlags state = gtk_widget_get_state_flags (widget); @@ -6242,8 +6243,9 @@ meta_gtk_widget_get_font_desc (GtkWidget *widget,    if (override)      pango_font_description_merge (font_desc, override, TRUE); +  font_size = pango_font_description_get_size (font_desc);    pango_font_description_set_size (font_desc, -                                   MAX (pango_font_description_get_size (font_desc) * scale, 1)); +                                   MAX ((gint) (scale * (double) font_size), 1));    return font_desc;  } diff --git a/src/wm-tester/test-gravity.c b/src/wm-tester/test-gravity.c index cb8512a0..68aad509 100644 --- a/src/wm-tester/test-gravity.c +++ b/src/wm-tester/test-gravity.c @@ -83,8 +83,8 @@ calculate_position (int i, int is_doubled, int *x, int *y)            yoff *= 2;          } -      *x = screen_x_fraction[i % 3] * screen_width + xoff; -      *y = screen_y_fraction[i / 3] * screen_height + yoff; +      *x = (int) (screen_x_fraction[i % 3] * (double) screen_width) + xoff; +      *y = (int) (screen_y_fraction[i / 3] * (double) screen_height) + yoff;      }  } | 
