broadway: Remove window translation code
This is no longer used as we neutered gdk_window_scroll & co.
This commit is contained in:
		@ -209,27 +209,6 @@ write_header(BroadwayOutput *output, char op)
 | 
			
		||||
  append_uint32 (output, output->serial++);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
broadway_output_copy_rectangles (BroadwayOutput *output,  int id,
 | 
			
		||||
				 BroadwayRect *rects, int n_rects,
 | 
			
		||||
				 int dx, int dy)
 | 
			
		||||
{
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  write_header (output, BROADWAY_OP_COPY_RECTANGLES);
 | 
			
		||||
  append_uint16 (output, id);
 | 
			
		||||
  append_uint16 (output, n_rects);
 | 
			
		||||
  for (i = 0; i < n_rects; i++)
 | 
			
		||||
    {
 | 
			
		||||
      append_uint16 (output, rects[i].x);
 | 
			
		||||
      append_uint16 (output, rects[i].y);
 | 
			
		||||
      append_uint16 (output, rects[i].width);
 | 
			
		||||
      append_uint16 (output, rects[i].height);
 | 
			
		||||
    }
 | 
			
		||||
  append_uint16 (output, dx);
 | 
			
		||||
  append_uint16 (output, dy);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
broadway_output_grab_pointer (BroadwayOutput *output,
 | 
			
		||||
			      int id,
 | 
			
		||||
 | 
			
		||||
@ -67,12 +67,6 @@ void            broadway_output_put_rgba        (BroadwayOutput *output,
 | 
			
		||||
						 void           *data);
 | 
			
		||||
void            broadway_output_surface_flush   (BroadwayOutput *output,
 | 
			
		||||
						 int             id);
 | 
			
		||||
void            broadway_output_copy_rectangles (BroadwayOutput *output,
 | 
			
		||||
						 int             id,
 | 
			
		||||
						 BroadwayRect   *rects,
 | 
			
		||||
						 int             n_rects,
 | 
			
		||||
						 int             dx,
 | 
			
		||||
						 int             dy);
 | 
			
		||||
void            broadway_output_grab_pointer    (BroadwayOutput *output,
 | 
			
		||||
						 int id,
 | 
			
		||||
						 gboolean owner_event);
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,6 @@ typedef enum {
 | 
			
		||||
} BroadwayEventType;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  BROADWAY_OP_COPY_RECTANGLES = 'b',
 | 
			
		||||
  BROADWAY_OP_GRAB_POINTER = 'g',
 | 
			
		||||
  BROADWAY_OP_UNGRAB_POINTER = 'u',
 | 
			
		||||
  BROADWAY_OP_NEW_SURFACE = 's',
 | 
			
		||||
@ -127,7 +126,6 @@ typedef enum {
 | 
			
		||||
  BROADWAY_REQUEST_SHOW_WINDOW,
 | 
			
		||||
  BROADWAY_REQUEST_HIDE_WINDOW,
 | 
			
		||||
  BROADWAY_REQUEST_SET_TRANSIENT_FOR,
 | 
			
		||||
  BROADWAY_REQUEST_TRANSLATE,
 | 
			
		||||
  BROADWAY_REQUEST_UPDATE,
 | 
			
		||||
  BROADWAY_REQUEST_MOVE_RESIZE,
 | 
			
		||||
  BROADWAY_REQUEST_GRAB_POINTER,
 | 
			
		||||
 | 
			
		||||
@ -1380,97 +1380,6 @@ broadway_server_has_client (BroadwayServer *server)
 | 
			
		||||
  return server->output != NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
_cairo_region (cairo_t         *cr,
 | 
			
		||||
	       const cairo_region_t *region)
 | 
			
		||||
{
 | 
			
		||||
  cairo_rectangle_int_t box;
 | 
			
		||||
  gint n_boxes, i;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (cr != NULL);
 | 
			
		||||
  g_return_if_fail (region != NULL);
 | 
			
		||||
 | 
			
		||||
  n_boxes = cairo_region_num_rectangles (region);
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < n_boxes; i++)
 | 
			
		||||
    {
 | 
			
		||||
      cairo_region_get_rectangle (region, i, &box);
 | 
			
		||||
      cairo_rectangle (cr, box.x, box.y, box.width, box.height);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
copy_region (cairo_surface_t *surface,
 | 
			
		||||
	     cairo_region_t *area,
 | 
			
		||||
	     gint            dx,
 | 
			
		||||
	     gint            dy)
 | 
			
		||||
{
 | 
			
		||||
  cairo_t *cr;
 | 
			
		||||
 | 
			
		||||
  cr = cairo_create (surface);
 | 
			
		||||
  cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
 | 
			
		||||
 | 
			
		||||
  _cairo_region (cr, area);
 | 
			
		||||
  cairo_clip (cr);
 | 
			
		||||
 | 
			
		||||
  /* NB: This is a self-copy and Cairo doesn't support that yet.
 | 
			
		||||
   * So we do a litle trick.
 | 
			
		||||
   */
 | 
			
		||||
  cairo_push_group (cr);
 | 
			
		||||
 | 
			
		||||
  cairo_set_source_surface (cr, surface, dx, dy);
 | 
			
		||||
  cairo_paint (cr);
 | 
			
		||||
 | 
			
		||||
  cairo_pop_group_to_source (cr);
 | 
			
		||||
  cairo_paint (cr);
 | 
			
		||||
 | 
			
		||||
  cairo_destroy (cr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gboolean
 | 
			
		||||
broadway_server_window_translate (BroadwayServer *server,
 | 
			
		||||
				  gint id,
 | 
			
		||||
				  cairo_region_t *area,
 | 
			
		||||
				  gint            dx,
 | 
			
		||||
				  gint            dy)
 | 
			
		||||
{
 | 
			
		||||
  BroadwayWindow *window;
 | 
			
		||||
  gboolean sent = FALSE;
 | 
			
		||||
 | 
			
		||||
  window = g_hash_table_lookup (server->id_ht,
 | 
			
		||||
				GINT_TO_POINTER (id));
 | 
			
		||||
  if (window == NULL)
 | 
			
		||||
    return FALSE;
 | 
			
		||||
 | 
			
		||||
  if (window->last_synced &&
 | 
			
		||||
      server->output)
 | 
			
		||||
    {
 | 
			
		||||
      BroadwayRect *rects;
 | 
			
		||||
      cairo_rectangle_int_t rect;
 | 
			
		||||
      int i, n_rects;
 | 
			
		||||
 | 
			
		||||
      copy_region (window->last_surface, area, dx, dy);
 | 
			
		||||
      n_rects = cairo_region_num_rectangles (area);
 | 
			
		||||
      rects = g_new (BroadwayRect, n_rects);
 | 
			
		||||
      for (i = 0; i < n_rects; i++)
 | 
			
		||||
	{
 | 
			
		||||
	  cairo_region_get_rectangle (area, i, &rect);
 | 
			
		||||
	  rects[i].x = rect.x;
 | 
			
		||||
	  rects[i].y = rect.y;
 | 
			
		||||
	  rects[i].width = rect.width;
 | 
			
		||||
	  rects[i].height = rect.height;
 | 
			
		||||
	}
 | 
			
		||||
      broadway_output_copy_rectangles (server->output,
 | 
			
		||||
				       window->id,
 | 
			
		||||
				       rects, n_rects, dx, dy);
 | 
			
		||||
      g_free (rects);
 | 
			
		||||
      sent = TRUE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return sent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
diff_surfaces (cairo_surface_t *surface,
 | 
			
		||||
	       cairo_surface_t *old_surface)
 | 
			
		||||
 | 
			
		||||
@ -156,23 +156,6 @@ function flushSurface(surface)
 | 
			
		||||
	    context.drawImage(cmd.img, cmd.x, cmd.y);
 | 
			
		||||
	    break;
 | 
			
		||||
 | 
			
		||||
	case 'b': // copy rects
 | 
			
		||||
	    context.save();
 | 
			
		||||
	    context.beginPath();
 | 
			
		||||
 | 
			
		||||
	    for (var j = 0; j < cmd.rects.length; j++) {
 | 
			
		||||
		var rect = cmd.rects[j];
 | 
			
		||||
		context.rect(rect.x, rect.y, rect.w, rect.h);
 | 
			
		||||
	    }
 | 
			
		||||
	    context.clip();
 | 
			
		||||
	    // This seems to break chrome when src overlaps dest
 | 
			
		||||
	    // But source-over should be fine for rgb surfaces anyway
 | 
			
		||||
	    //context.globalCompositeOperation = "copy";
 | 
			
		||||
	    context.drawImage(surface.canvas,
 | 
			
		||||
			      cmd.dx, cmd.dy);
 | 
			
		||||
	    context.restore();
 | 
			
		||||
	    break;
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
	    alert("Unknown drawing op " + cmd.op);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -124,26 +124,6 @@ send_reply (BroadwayClient *client,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static cairo_region_t *
 | 
			
		||||
region_from_rects (BroadwayRect *rects, int n_rects)
 | 
			
		||||
{
 | 
			
		||||
  cairo_region_t *region;
 | 
			
		||||
  cairo_rectangle_int_t *cairo_rects;
 | 
			
		||||
  int i;
 | 
			
		||||
  
 | 
			
		||||
  cairo_rects = g_new (cairo_rectangle_int_t, n_rects);
 | 
			
		||||
  for (i = 0; i < n_rects; i++)
 | 
			
		||||
    {
 | 
			
		||||
      cairo_rects[i].x = rects[i].x;
 | 
			
		||||
      cairo_rects[i].y = rects[i].y;
 | 
			
		||||
      cairo_rects[i].width = rects[i].width;
 | 
			
		||||
      cairo_rects[i].height = rects[i].height;
 | 
			
		||||
    }
 | 
			
		||||
  region = cairo_region_create_rectangles (cairo_rects, n_rects);
 | 
			
		||||
  g_free (cairo_rects);
 | 
			
		||||
  return region;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
add_client_serial_mapping (BroadwayClient *client,
 | 
			
		||||
			   guint32 client_serial,
 | 
			
		||||
@ -217,7 +197,6 @@ client_handle_request (BroadwayClient *client,
 | 
			
		||||
  BroadwayReplyQueryMouse reply_query_mouse;
 | 
			
		||||
  BroadwayReplyGrabPointer reply_grab_pointer;
 | 
			
		||||
  BroadwayReplyUngrabPointer reply_ungrab_pointer;
 | 
			
		||||
  cairo_region_t *area;
 | 
			
		||||
  cairo_surface_t *surface;
 | 
			
		||||
  guint32 before_serial, now_serial;
 | 
			
		||||
 | 
			
		||||
@ -274,16 +253,6 @@ client_handle_request (BroadwayClient *client,
 | 
			
		||||
						request->set_transient_for.id,
 | 
			
		||||
						request->set_transient_for.parent);
 | 
			
		||||
      break;
 | 
			
		||||
    case BROADWAY_REQUEST_TRANSLATE:
 | 
			
		||||
      area = region_from_rects (request->translate.rects,
 | 
			
		||||
				request->translate.n_rects);
 | 
			
		||||
      broadway_server_window_translate (server,
 | 
			
		||||
					request->translate.id,
 | 
			
		||||
					area,
 | 
			
		||||
					request->translate.dx,
 | 
			
		||||
					request->translate.dy);
 | 
			
		||||
      cairo_region_destroy (area);
 | 
			
		||||
      break;
 | 
			
		||||
    case BROADWAY_REQUEST_UPDATE:
 | 
			
		||||
      surface = broadway_server_open_surface (server,
 | 
			
		||||
					      request->update.id,
 | 
			
		||||
 | 
			
		||||
@ -509,43 +509,6 @@ _gdk_broadway_server_window_set_transient_for (GdkBroadwayServer *server,
 | 
			
		||||
				    BROADWAY_REQUEST_SET_TRANSIENT_FOR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gboolean
 | 
			
		||||
_gdk_broadway_server_window_translate (GdkBroadwayServer *server,
 | 
			
		||||
				       gint id,
 | 
			
		||||
				       cairo_region_t *area,
 | 
			
		||||
				       gint            dx,
 | 
			
		||||
				       gint            dy)
 | 
			
		||||
{
 | 
			
		||||
  BroadwayRequestTranslate *msg;
 | 
			
		||||
  cairo_rectangle_int_t rect;
 | 
			
		||||
  int i, n_rects;
 | 
			
		||||
  gsize msg_size;
 | 
			
		||||
 | 
			
		||||
  n_rects = cairo_region_num_rectangles (area);
 | 
			
		||||
 | 
			
		||||
  msg_size = sizeof (BroadwayRequestTranslate) + (n_rects-1) * sizeof (BroadwayRect);
 | 
			
		||||
  msg = g_malloc (msg_size);
 | 
			
		||||
 | 
			
		||||
  msg->id = id;
 | 
			
		||||
  msg->dx = dx;
 | 
			
		||||
  msg->dy = dy;
 | 
			
		||||
  msg->n_rects = n_rects;
 | 
			
		||||
  
 | 
			
		||||
  for (i = 0; i < n_rects; i++)
 | 
			
		||||
    {
 | 
			
		||||
      cairo_region_get_rectangle (area, i, &rect);
 | 
			
		||||
      msg->rects[i].x = rect.x;
 | 
			
		||||
      msg->rects[i].y = rect.y;
 | 
			
		||||
      msg->rects[i].width = rect.width;
 | 
			
		||||
      msg->rects[i].height = rect.height;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  gdk_broadway_server_send_message_with_size (server, (BroadwayRequestBase *)msg, msg_size,
 | 
			
		||||
					      BROADWAY_REQUEST_TRANSLATE);
 | 
			
		||||
  g_free (msg);
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void *
 | 
			
		||||
map_named_shm (char *name, gsize size)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user