only check scale once per playback

upstream status: imx specific

Signed-off-by: Haihua Hu <jared.hu@nxp.com>
diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
index 871fd86..19ea739 100644
--- a/sys/kms/gstkmssink.c
+++ b/sys/kms/gstkmssink.c
@@ -422,7 +422,10 @@
   guint32 crtc_w, crtc_h;
   GstKMSMemory *kmsmem = NULL;
 
-  if (!self->can_scale)
+  /* we assume driver can scale at initialize,
+   * if scale is checked or can not scale, we
+   * don't need check again */
+  if (self->scale_checked || !self->can_scale)
     return;
 
   if (self->conn_id < 0)
@@ -449,6 +452,7 @@
     GST_INFO_OBJECT (self, "scale is not support");
   }
 
+  self->scale_checked = TRUE;
   g_clear_pointer (&kmsmem, gst_memory_unref);
 }
 
@@ -1912,6 +1916,7 @@
   sink->conn_id = -1;
   sink->plane_id = -1;
   sink->can_scale = TRUE;
+  sink->scale_checked = FALSE;
   gst_poll_fd_init (&sink->pollfd);
   sink->poll = gst_poll_new (TRUE);
   gst_video_info_init (&sink->vinfo);
diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
index 3767ab8..e8ab54e 100644
--- a/sys/kms/gstkmssink.h
+++ b/sys/kms/gstkmssink.h
@@ -68,6 +68,7 @@
   gboolean has_prime_export;
   gboolean has_async_page_flip;
   gboolean can_scale;
+  gboolean scale_checked;
 
   /* global alpha */
   gboolean is_alpha_set;