• Kent Hansen's avatar
    Say hello to QtQuick module · 6c8378ea
    Kent Hansen authored
    
    This change moves the QtQuick 2 types and C++ API (including
    SceneGraph) to a new module (AKA library), QtQuick.
    
    99% of this change is moving files from src/declarative to
    src/quick, and from tests/auto/declarative to
    tests/auto/qtquick2.
    
    The loading of QtQuick 2 ("import QtQuick 2.0") is now delegated to
    a plugin, src/imports/qtquick2, just like it's done for QtQuick 1.
    
    All tools, examples, and tests that use QtQuick C++ API have gotten
    "QT += quick" or "QT += quick-private" added to their .pro file.
    
    A few additional internal QtDeclarative classes had to be exported
    (via Q_DECLARATIVE_PRIVATE_EXPORT) since they're needed by the
    QtQuick 2 implementation.
    
    The old header locations (e.g. QtDeclarative/qquickitem.h) will
    still be supported for some time, but will produce compile-time
    warnings. (To avoid the QtQuick implementation using the
    compatibility headers (since QtDeclarative's includepath comes
    first), a few include statements were modified, e.g. from
    "#include <qsgnode.h>" to "#include <QtQuick/qsgnode.h>".)
    
    There's a change in qtbase that automatically adds QtQuick to the
    module list if QtDeclarative is used. Together with the compatibility
    headers, this should help reduce the migration pain for existing
    projects.
    
    In theory, simply getting an existing QtDeclarative-based project
    to compile and link shouldn't require any changes for now -- but
    porting to the new scheme is of course recommended, and will
    eventually become mandatory.
    
    Task-number: QTBUG-22889
    Reviewed-by: default avatarLars Knoll <lars.knoll@nokia.com>
    Change-Id: Ia52be9373172ba2f37e7623231ecb060316c96a7
    Reviewed-by: default avatarKent Hansen <kent.hansen@nokia.com>
    Reviewed-by: default avatarSergio Ahumada <sergio.ahumada@nokia.com>
    6c8378ea
warnings.c 3.13 KiB
/*
 *  Copyright (c) 2013 The WebM project authors. All Rights Reserved.
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */
#include "./warnings.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "vpx/vpx_encoder.h"
#include "./tools_common.h"
#include "./vpxenc.h"
static const char quantizer_warning_string[] =
    "Bad quantizer values. Quantizer values should not be equal, and should "
    "differ by at least 8.";
static const char lag_in_frames_with_realtime[] =
    "Lag in frames is ignored when deadline is set to realtime.";
struct WarningListNode {
  const char *warning_string;
  struct WarningListNode *next_warning;
struct WarningList {
  struct WarningListNode *warning_node;
static void add_warning(const char *warning_string,
                        struct WarningList *warning_list) {
  struct WarningListNode **node = &warning_list->warning_node;
  struct WarningListNode *new_node = malloc(sizeof(*new_node));
  if (new_node == NULL) {
    fatal("Unable to allocate warning node.");
  new_node->warning_string = warning_string;
  new_node->next_warning = NULL;
  while (*node != NULL)
    node = &(*node)->next_warning;
  *node = new_node;
static void free_warning_list(struct WarningList *warning_list) {
  struct WarningListNode *node = warning_list->warning_node;
  while (warning_list->warning_node != NULL) {
    node = warning_list->warning_node->next_warning;
    free(warning_list->warning_node);
    warning_list->warning_node = node;
static int continue_prompt(int num_warnings) {
  int c;
  fprintf(stderr,
          "%d encoder configuration warning(s). Continue? (y to continue) ",
          num_warnings);
  c = getchar();
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
return c == 'y'; } static void check_quantizer(int min_q, int max_q, struct WarningList *warning_list) { const int lossless = min_q == 0 && max_q == 0; if (!lossless && (min_q == max_q || abs(max_q - min_q) < 8)) add_warning(quantizer_warning_string, warning_list); } void check_encoder_config(int disable_prompt, const struct VpxEncoderConfig *global_config, struct vpx_codec_enc_cfg *stream_config) { int num_warnings = 0; struct WarningListNode *warning = NULL; struct WarningList warning_list = {0}; check_quantizer(stream_config->rc_min_quantizer, stream_config->rc_max_quantizer, &warning_list); if (global_config->deadline == VPX_DL_REALTIME) stream_config->g_lag_in_frames = 0; /* Count and print warnings. */ for (warning = warning_list.warning_node; warning != NULL; warning = warning->next_warning, ++num_warnings) { warn(warning->warning_string); } free_warning_list(&warning_list); if (num_warnings) { if (!disable_prompt && !continue_prompt(num_warnings)) exit(EXIT_FAILURE); } }