двойная буферизация в режиме транзакции для визуализации графического интерфейса пользователя
Классы МПК: | G06F3/048 средства взаимодействия для графических интерфейсов пользователя, например взаимодействие через окна, иконки или меню G06F3/14 вывод цифровых данных на индикаторные приборы G06T1/00 Обработка данных изображения общего применения |
Автор(ы): | ЗАИКА Игорь (US), ФОМИЧЕВ Эндрю (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2009-05-15 публикация патента:
10.06.2014 |
Изобретение относится к компьютерной технике, в частности к программным приложениям, включающим в себя графический интерфейс пользователя. Технический результат заключается в улучшенной плавности и реактивности отображения обновления графического интерфейса за счет выполнения обновления вне экрана или на уровне временно невидимого экрана до момента завершения. Способ обновления графического интерфейса пользователя (GUI) содержит этапы, на которых обнаруживают запрошенное действие, которое приведет к перерисовке части GUI, определяют, что запрошенным действием вносится задержка в перерисовку этой части GUI, выполняют транзакцию запрошенного действия посредством инициирования, параллельным образом, средства управления двойной буферизацией, которое визуализирует обновления GUI и делает их невидимыми, и потока экрана-заставки, который отображается на дисплее, и подают визуализируемые обновления GUI на дисплей по завершении транзакции запрошенного действия. 3 н. и 11 з.п. ф-лы, 5 ил.
Формула изобретения
1. Реализуемый компьютером способ обновления графического интерфейса пользователя (GUI), содержащий этапы, на которых:
посредством процессора компьютера обнаруживают запрошенное действие, которое приведет в результате к перерисовке по меньшей мере одной части GUI;
посредством процессора компьютера определяют, что запрошенным действием вносится задержка в перерисовку этой по меньшей мере одной части GUI;
посредством процессора компьютера выполняют транзакцию запрошенного действия в ответ на определение того, что запрошенное действие может вносить задержку, посредством инициирования, параллельным образом, средства управления двойной буферизацией, которое визуализирует обновления GUI, связанные с транзакцией, и делает визуализируемые обновления GUI невидимыми, и потока экрана-заставки, которым отображается экран-заставка, включающий в себя индикатор состояния, связанный с запрошенным действием, на дисплее компьютера; и
посредством процессора компьютера подают визуализируемые обновления GUI на дисплей компьютера по завершении транзакции запрошенного действия.
2. Способ по п.1, в котором при визуализации обновлений GUI и делании визуализируемых обновлений GUI невидимыми отрисовывают визуализируемые обновления GUI во внеэкранный буфер визуализации.
3. Способ по п.1, в котором при визуализации обновлений GUI и делании визуализируемых обновлений GUI невидимыми отрисовывают визуализируемые обновления GUI в прозрачное многослойное окно, которое является невидимым.
4. Способ по п.3, в котором при подаче посредством процессора компьютера визуализируемых обновлений GUI на дисплей компьютера делают прозрачное многослойное окно видимым.
5. Способ по п.1, дополнительно содержащий этап, на котором посредством процессора компьютера отображают опцию отмены на экране-заставке во время транзакции запрошенного действия, причем выбор опции отмены предписывает процессору компьютера завершить транзакцию запрошенного действия.
6. Способ по п.1, дополнительно содержащий этап, на котором посредством процессора компьютера выдают сигнал хода выполнения в поток экрана-заставки, который обновляет индикатор состояния на основе хода процесса визуализации обновлений GUI средством управления двойной буферизацией.
7. Компьютерный носитель данных, на котором сохранены машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру:
обнаруживать запрошенное действие, которое приведет в результате к перерисовке по меньшей мере одной части графического интерфейса пользователя (GUI);
определять, что запрошенным действием вносится задержка в перерисовку этой по меньшей мере одной части GUI;
выполнять транзакцию запрошенного действия в ответ на определение того, что запрошенное действие может вносить задержку, посредством инициирования, параллельным образом, средства управления двойной буферизацией, которое визуализирует обновления GUI, связанные с транзакцией, и делает визуализируемые обновления GUI невидимыми, и потока экрана-заставки, которым отображается экран-заставка, включающий в себя индикатор состояния, связанный с запрошенным действием, на дисплее компьютера; и
подавать визуализируемые обновления GUI на дисплей компьютера по завершении транзакции запрошенного действия.
8. Компьютерный носитель данных по п.7, в котором при визуализации обновлений GUI и делании визуализируемых обновлений GUI невидимыми визуализируемые обновления GUI отрисовываются во внеэкранный буфер визуализации.
9. Компьютерный носитель данных по п.7, в котором при визуализации обновлений GUI и делании визуализируемых обновлений GUI невидимыми визуализируемые обновления GUI отрисовываются в прозрачное многослойное окно, которое является невидимым.
10. Компьютерный носитель данных по п.9, в котором при подаче посредством процессора компьютера визуализируемых обновлений GUI на дисплей компьютера прозрачное многослойное окно делается видимым.
11. Компьютерный носитель данных по п.7, дополнительно содержащий машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру отображать опцию отмены во время транзакции запрошенного действия.
12. Компьютерный носитель данных по п.11, в котором при отображении опции отмены опция отмены отображается на экране-заставке, причем выбор опции отмены предписывает компьютеру завершить транзакцию запрошенного действия.
13. Компьютерный носитель данных по п.7, дополнительно содержащий машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру выдавать сигнал хода выполнения в поток экрана-заставки, который обновляет индикатор состояния на основе хода процесса визуализации обновлений GUI средством управления двойной буферизацией.
14. Устройство для обновления графического интерфейса пользователя (GUI), содержащее процессор и компьютерный машиночитаемый носитель, на котором сохранены машиноисполняемые команды, которые при их исполнении процессором предписывают устройству:
обнаруживать запрошенное действие, которое приведет в результате к перерисовке по меньшей мере одной части GUI;
определять, что запрошенным действием вносится одно из продолжительной задержки и неизвестной задержки в перерисовку этой по меньшей мере одной части GUI;
выполнять транзакцию запрошенного действия на основе определения того, что это действие может вносить одно из продолжительной задержки и неизвестной задержки, при этом выполнение транзакции содержит параллельную работу средства управления двойной буферизацией, которое визуализирует обновления GUI, связанные с транзакцией, и делает визуализируемые обновления GUI невидимыми путем отрисовки обновлений GUI в одно или оба из внеэкранного буфера визуализации и прозрачного многослойного окна, которое невидимо, и потока экрана-заставки, которым отображается экран-заставка, включающий в себя индикатор состояния, связанный с запрошенным действием, на дисплее компьютера;
отображать опцию отмены на экране-заставке во время транзакции запрошенного действия, причем выбор опции отмены предписывает устройству завершить транзакцию запрошенного действия;
выдавать сигнал хода выполнения в поток экрана-заставки, который обновляет индикатор состояния на основе хода процесса визуализации обновлений GUI средством управления двойной буферизацией;
выдавать сигнал завершения в поток экрана-заставки, который обеспечивает уведомление о завершении транзакции запрошенного действия;
завершать транзакцию запрошенного действия в ответ на выдачу сигнала завершения в поток экрана-заставки; и
подавать визуализируемые обновления GUI на компьютерный дисплей в ответ на выдачу сигнала завершения в поток экрана-заставки.
Описание изобретения к патенту
УРОВЕНЬ ТЕХНИКИ
Типичные графические программные приложения включают в себя пользовательский интерфейс (ПИ, UI) или графический интерфейс пользователя (ГИП, GUI). Примерами таких приложений являются те, которые исполняются внутри или вместе с операционной системой MICROSOFT WINDOWS® корпорации MICROSOFT CORPORATION. Более конкретно, примеры могут включать в себя программное обеспечение для автоматизации учрежденческой деятельности MICROSOFT OFFICE® от корпорации MICROSOFT CORPORATION, программное обеспечение для управления персональной информацией OUTLOOK® от корпорации MICROSOFT CORPORATION и программное обеспечение обработки текста MICROSOFT WORD® от корпорации MICROSOFT CORPORATION.
GUI графического программного приложения обычно составлен из многих элементов. Эти элементы могут включать в себя различные управляющие элементы, представления (виды), меню, панели инструментов, индикаторы или любое число других UI элементов. Тогда как полное пространство отображения данного приложения зачастую именуется "окно" приложения, различные элементы UI сами могут считаться "окнами" в рамках визуального отображения приложения. На уровне программной реализации эти различные UI элемент или "окна" могут именоваться указателями на окна или описатели (дескрипторы) окон. Чтобы отобразить все UI элементы приложения, все связанные окна в рамках отображения приложения индивидуально вычерчивают, визуализируют, или рисуют (выводят на экран). Обычно это делается согласно посылке сообщения "paint" (рисовать) или сигнала на каждое из окон или равным образом согласно вызову метода paint "оконного" объекта, связанного с каждым окном в пространстве отображения приложения.
Когда приложение запускается или выполняется операция, которая включает в себя перерисовку компонентных окон, пользователь может воспринимать частичную или неполную визуализацию приложения, поскольку каждое компонентное окно осуществляет перерисовку по внешнему виду в случайном порядке с различными задержками. Примером того, когда это может иметь место, является загрузка файла или ресурса по сети, занимающая неопределенное количество времени. Другие примеры относятся к начальному запуску приложения или к переключению представлений приложения в случае, когда предпринимается большое число повторных вычислений компонентов отображения.
По внешнему виду случайные задержки и упорядочение обновлений UI компонентов могут отвлекать или запутывать пользователя. Если встречается длительная задержка, например некоторая, связанная с загрузкой по сети, пользователь может оказаться перед частично вычерченным окном в течение длительного периода. Это может обусловить беспокойство пользователя, что произошел сбой. Такое беспокойство может быть образовано отсутствием наглядного, безопасного механизма для пользователя для преждевременного прекращения операции.
В отношении этих и других соображений представлено выполненное при этом раскрытие.
СУЩНОСТИ ИЗОБРЕТЕНИЯ
В документе описываются технологии для улучшения пользовательского восприятия во время визуализации (рендеринга), или перерисовки, графического интерфейса. В частности, описываются способы для установления связанных с пользовательским интерфейсом транзакций, во время которых визуализация графического интерфейса пользователя может осуществляться с двойной буферизацией. Длительные или задержанные обновления экрана могут выполняться вне экрана или на уровне временно невидимого экрана, пока не будут завершены. После завершения обновления могут сразу извлекаться на экран. Это может иметь результатом для пользовательского восприятия (интерфейса) улучшенную плавность и реактивность. Обновления графического экрана могут по-разному именоваться визуализацией, рисованием, перерисовкой, вычерчиванием или так дальше.
Согласно одному аспекту, представленному в документе, осуществляемые в режиме транзакции рисование, или перерисовка графического интерфейса пользователя может инициироваться в ответ на действие пользователя. Транзакция может устанавливаться, если конкретное действие пользователя может потребовать длительное или неопределенное количество времени. В течение транзакции визуализация пользовательского интерфейса может осуществляться с двойной буферизацией, пока требуемое действие не завершится. Завершение действия может быть привязано к обновлению состояния UI внутри приложения, подтверждающего, что завершились различные необходимые операции рисования экрана. После завершения запрошенного действия буферизованные двойным образом обновления экрана могут подаваться на экран дисплея синхронно ("в унисон"), чтобы показываться почти мгновенными пользователю. Такое завершение буферизации в режиме транзакции может происходить автоматически в ответ на завершение запрошенного действия.
Согласно другому аспекту, представленному в документе, двойная буферизация обновлений экрана может выполняться по многим GUI элементам, или окнам, связанным с приложением. Однокомпонентное окно, или UI элемент, может быть двойным образом буферизован в простой (один) буфер. Кроме того, множественные UI элементы могут быть буферизованы отдельно. Однако дополнительная эффективность и рабочая характеристика могут обеспечиваться двойной буферизацией множественных UI элементов, связанных с приложением, в общий двойной буфер для визуализации.
Согласно еще одному аспекту, представленному в документе, двойная буферизация может также поддерживаться путем рисования по отношению к установленному в полную прозрачность экранному слою. Либо одна единица, либо комбинация из внеэкранного буфера и прозрачного слоя могут использоваться, чтобы обеспечить двойную буферизацию отображения GUI.
Согласно еще одному аспекту, представленному в документе, может обеспечиваться обратная связь пользователю относительно хода выполнения или состояния запрошенного действия, которое начало транзакцию. Например, открытие документа по сети может потребовать длительного времени. В течение этого времени пользователю может обеспечиваться информация о ходе выполнения, пока визуализацию его открытого файла задерживает сетевая операция. Ход выполнения может быть отображен на экране-заставке, который может быть представлен, даже если фактическое отображение приложения в текущий момент двойным образом буферизуется вне экрана или на прозрачном слое. Экран-заставка может также включать в себя UI отмены, чтобы предоставить пользователю безопасный способ прервать операцию. Например, если пользователь не желает продолжать ожидать завершения или если пользователь понимает, что он сделал ошибку в инициировании транзакции. Экран-заставка, индикатор хода процесса, UI отмены, и связанные операции могут исполняться в отдельном потоке или другой параллельной операции, отдельной от осуществляемого в режиме транзакции самого действия. Такая потоковая обработка может поддерживать весьма быстрореагирующий экран-заставку, даже если режим транзакций действие остается в ходе выполнения.
Следует оценить, что вышеописанный объект изобретения также может быть реализован в виде управляемого компьютером устройства, вычислительного процесса, вычислительной системы или в виде изделия, такого как читаемый компьютером носитель. Эти и различные другие признаки будут очевидны из прочтения нижеследующего подробного описания и анализа связанных с ним чертежей.
Данное краткое описание приведено, чтобы в упрощенной форме представить подборку понятий, которые дополнительно описываются ниже в подробном описании. Это краткое описание не предназначается для идентификации основных признаков или существенных признаков заявленного объекта изобретения, и не подразумевается, что это краткое описание используется, чтобы ограничить объем заявленного объекта изобретения. Кроме того, заявленный объект изобретения не ограничивается реализациями, которые решают проблемы какого-либо или всех недостатков, отмеченных в любой части этого раскрытия.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - функциональная блок-схема, иллюстрирующая механизмы для двойной буферизации графического интерфейса пользователя наряду с отображением экрана-заставки согласно аспектам варианта осуществления, представленного в документе;
Фиг.2 - логическая блок-схема, иллюстрирующая аспекты процессов для совершенствования визуализации графического интерфейса пользователя согласно аспектам варианта осуществления, представленного в документе;
Фиг.3 - логическая блок-схема, иллюстрирующая аспекты процессов для осуществляемой в режиме транзакции двойной буферизации в течение визуализации графического интерфейса пользователя согласно аспектам варианта осуществления, представленного в документе;
Фиг.4 - логическая блок-схема, иллюстрирующая аспекты процессов для поддержания экрана-заставки в графическом интерфейсе пользователя согласно аспектам варианта осуществления, представленного в документе; и
Фиг.5 - схема архитектуры вычислительной системы, показывающая иллюстративную архитектуру аппаратных средств и программного обеспечения компьютера для вычислительной системы, способной реализовать аспекты варианта осуществления, представленного в документе.
ПОДРОБНОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Нижеследующее подробное описание касается технологий, предназначенных для установления связанных с пользовательским интерфейсом транзакций, в течение которых визуализация графического интерфейса пользователя может осуществляться с двойной буферизацией. С помощью технологий и понятий, представленных в документе, длительные или задержанные обновления экрана могут выполняться вне экрана или на временно невидимом слое экрана, пока не будут завершены. После завершения обновления могут отображаться на видимом экране как одна операция. Это может давать в результате практику работы пользователя с улучшенной реактивностью и плавной согласованностью.
Хотя объект изобретения, описанный в документе, представлен в общем контексте программных модулей, которые исполняются вместе с исполнением операционной системы и прикладных программ на компьютерной системе, специалисты в данной области техники признают, что могут выполняться другие реализации в комбинации с другими типами программных модулей. Обычно, программные модули включают в себя процедуры, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют особые абстрактные типы данных. Кроме того, специалисты в данной области техники оценят, что объект изобретения, описанный в документе, может быть осуществлен на практике с другими конфигурациями вычислительной системы, включая переносные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронику, мини-компьютеры, большие ЭВМ и подобное.
В нижеследующем подробном описании делаются ссылки на сопроводительные чертежи, которые составляют его часть и показывают в качестве иллюстрации конкретные варианты осуществления или примеры. Теперь с обращением на чертежи, на которых одинаковые числовые ссылочные позиции представляют одинаковые элементы по нескольким чертежам, будут описаны аспекты вычислительной системы и методики для установления связанных с пользовательским интерфейсом транзакций, в течение которых визуализация графического интерфейса пользователя может осуществляться с двойной буферизацией.
Обращаясь теперь к Фиг.1, на функциональной блок-схеме иллюстрируется система 100 для двойной буферизации графического интерфейса пользователя наряду с отображением экрана-заставки 160 согласно аспектам варианта осуществления, представленного в документе. В частности, графический интерфейс пользователя, связанный с приложением 110, может быть представлен на дисплее 190 компьютера. Когда инициированное пользователем действие может содержать длительную задержку или неопределенное количество времени, то могут вноситься задержки между перерисовкой частей пользовательского интерфейса. Это может предоставлять пользовательскому восприятию затянувшиеся частичные отображения, скачкообразную визуализацию или несогласованные отображения. Длительные задержки могут вноситься при загрузке приложения, при загрузке ресурса по сети, когда изменение представления требует повторного вычисления элементов отображения, или при нескольких других таких условиях.
Двойная буферизация в режиме транзакции может поддерживать более сглаженный графический интерфейс пользователя. Внеэкранный буфер 130 визуализации может быть снабжен менеджером (управляющей программой) 120 двойной буферизации. Различные компонентные окна, представляющие управляющие элементы, меню, панели инструментов, окна и другие пользовательские компоненты интерфейса, связанные с приложением 110, могут быть рисованы, или обновлены, в буфере 130 визуализации с тем, чтобы потенциально ступенчатые, неполные или скачкообразные обновления отображения не были видимы пользователю. Как только обновления UI завершены, буфер 130 визуализации можно "проталкивать" в дисплей 190 компьютера в виде одной операции. Такое выполнение может позволять, чтобы обновления экрана имели вид почти мгновенных. Обновление может обрабатываться менеджером 120 двойного буфера. Менеджер 120 двойного буфера может подавать обновления в буфере 130 визуализации на дисплей 190 по запросу. Менеджер 130 двойной буферизации может быть частью прикладного программного обеспечения 110 или может поддерживаться операционной системой, графической подсистемой, или менеджером экрана.
Другой механизм для двойной буферизации может использовать прозрачное многослойное окно 140. Когда компонент приложения не может быть модифицирован, чтобы визуализировать обновления по отношению к внеэкранному буферу 130 визуализации, может использоваться подход с прозрачным многослойным окном 140. Компонент приложения может предотвращать модификацию, если не имеется в наличии исходного кода, когда он является внешне поставленной библиотекой или компонентом, таким как управляющий элемент ACTIVEX©, или когда интересы времени, бюджета или передачи права препятствуют модификации кода.
Компонент GUI может быть снабжен прозрачным многослойным окном 140, на котором он может "рисовать" свои графические обновления. Многослойное окно может использовать графический слой, настроенный в полную прозрачность так, что потенциально ступенчатые, скачкообразные или задержанные обновления экрана невидимы пользователю. Когда обновления экрана завершены и было обновлено состояние UI, прозрачность может быть изменена в полную непрозрачность. Многослойное окно 140 таким образом можно сделать видимым пользователю в одной операции с тем, чтобы сделать появление обновлений почти мгновенным.
Могут использоваться либо внеэкранный буфер 130 визуализации, прозрачное многослойное окно 140, либо вместе, чтобы обеспечить двойную буферизацию GUI, связанного с прикладным программным обеспечением 110. Как только обновления завершены, биты отображения, хранимые менеджером 120 двойной буферизации, или связанные с буфером 130 визуализации, можно поместить в многослойное окно 140. Затем прозрачность может быть установлена в полностью непрозрачную, и различные обновления UI могут стать видимыми пользователю синхронно, в виде одной операции.
Связанные с пользовательским интерфейсом транзакции могут использоваться, чтобы управлять множеством обновлений UI, которые могут быть собраны вместе для двойной буферизации. Множество обновлений UI в рамках данной транзакции обычно связано с конкретным действием пользователя, которое может вносить задержки, таким как начальное открытие приложения, загрузка файла по сети, изменение представлений UI в рамках приложения, или другие такие операции. В течение транзакции визуализация пользовательского интерфейса может осуществляться с двойной буферизацией, пока не будет завершено запрошенное действие.
Если может последовать длительное или неизвестное время транзакции, пользователю может быть представлен экран-заставка 160. Поскольку GUI может быть обновляющимся по отношению к механизму двойной буферизации, такому как внеэкранный буфер 130 визуализации или прозрачное многослойное окно 140, пользователь может остаться без обновлений экрана, если это не предназначено для представления экрана-заставки 160. Экран-заставка 160 может поддерживаться посредством потока 150 экрана-заставки. Поток 150 экрана-заставки может быть частью прикладного программного обеспечения 110. Поток 150 экрана-заставки может выполниться как отдельный поток, процесс, или другой параллелизованный механизм, отдельный от компонентов прикладного программного обеспечения 110, относящихся к осуществляемому в режиме транзакции действию пользователя. Выделение операций, относящихся к экрану-заставке 160, в поток 150 экрана-заставки может давать возможность, что экран-заставка 160 обновляется и обрабатывается быстрореагирующим и интерактивным образом, даже если осуществляемая в режиме транзакции операция находится в процессе выполнения, и потенциально задерживается.
Экран-заставка 160, как поддерживается потоком 150 экрана-заставки, может обеспечивать пользователю один или несколько индикаторов хода процесса. Индикаторы хода процесса могут предоставлять пользователю информацию о выполняемых действиях и примерно насколько длительными могут быть связанные с ними задержки. Примером индикатора хода процесса является индикатор 170 выполнения, который может показывать процентное соотношение хода выполнения для выполняемого действия.
Экран-заставка 160, как поддерживается потоком 150 экрана-заставки, может обеспечивать пользователю UI отмены. Например, кнопка 180 отмены может быть расположена на экране-заставке 160. Такой механизм отмены может предоставить пользователю безопасный способ прервать осуществляемую в режиме транзакции операцию. Например, пользователь может не желать продолжать ожидание завершения запрошенного действия. Подобным образом пользователь может понять, что инициирование транзакции было сделано с ошибкой. В ситуациях, таких как эти, пользователь может оперировать UI отмены, обеспеченным на экране-заставке 160.
Теперь с обращением на Фиг.2 будут представлены дополнительные подробности относительно представленных в документе вариантов осуществления для двойной буферизации графического интерфейса пользователя при обеспечении при этом отображения экрана-заставки согласно аспектам варианта осуществления, представленного в документе. В частности, на Фиг.2 показана блок-схема, иллюстрирующая аспекты процедуры 200 для улучшения визуализации графического интерфейса пользователя.
Следует оценить, что логические операции, описанные в документе могут быть реализованы (1), в виде последовательности реализуемых компьютером действий или программных модулей, исполняющихся в вычислительной системе, и/или (2) в виде взаимосвязанных схем машинной логики или схемных модулей в рамках вычислительной системы. Реализация является вопросом выбора, зависящим от рабочей характеристики и других требований к вычислительной системе. Соответственно, логические операции, описанные в документе, именуются различно операциями над состояниями, структурными устройствами, действиями или модулями. Эти операции, структурные устройства, действия и модули могут быть реализованы в виде программного обеспечения, микропрограммного обеспечения, в виде специализированной цифровой логики и любой комбинации таковых. Также следует оценить, что может выполняться больше или меньше операций, чем показано на чертежах и описано в документе. Эти операции также могут выполняться последовательно, параллельно или в очередности, отличной от описанной в документе.
Процедура 200 начинается в операции 210, где может быть выявлено запрошенное пользователем действие. Операция 220 принятия решения может определять для осуществления транзакции запрошенное действие. Обычно, действие может осуществляться в режиме транзакции, если оно может внести длительную задержку или неизвестную задержку. Например, запуск приложения может осуществляться в режиме транзакции, особенно когда документ открывается в течение запуска приложения. Действия, которые загружают по сети файлы или ресурсы доступа, а также действия, касающиеся изменения представления приложения, являются дополнительными примерами действий, которые могут осуществляться в режиме транзакции. Хотя действие, которое может быть завершено очень быстро, не должно обязательно осуществляться в режиме транзакции, такое действие может быть осуществлено в режиме транзакции без существенного влияния.
Если в операции 220 определяется, что действие не должно осуществляться в режиме транзакции, процедура 200 может продолжаться на операции 230, где запрошенное действие может быть выполнено без двойным образом буферизованного GUI в режиме транзакции. Однако если в операции 220 определяется, что действие должно осуществляться в режиме транзакции, то процедура 200 может продолжаться, чтобы начать две операции параллельно. Эти две операции могут быть представлены как процедура 300 для выполнения запрошенного действия с поддерживаемым транзакцией, двойным образом буферизованным GUI, а также процедура 400, где может быть запущен поток экрана-заставки. Дополнительные подробности, относящиеся к процедуре 300 и процедуре 400, представлены ниже по отношению к Фиг.3 и Фиг.4.
Процедура 300 может поставлять сигнал хода выполнения на процедуру 400 для обновления индикаторов состояния, связанных с экраном-заставкой 160, таких как индикатор 170 выполнения. Кроме того, процедура 300 может поставлять сигнал завершения на процедуру 400 для уведомления о завершении транзакции, связанной с запрошенным действием. Процедура 200 может завершиться после возврата из процедуры 300 или после операции 230 в зависимости от ветви, выбранной процедурой 200.
Теперь с обращением на Фиг.3 будут приведены дополнительные подробности относительно представленных в документе вариантов осуществления для двойной буферизации графического интерфейса пользователя, обеспечивающего при этом отображение экрана-заставки согласно аспектам варианта осуществления, представленного в документе. В частности, на Фиг.3 показана блок-схема, иллюстрирующая аспекты процесса 300 для двойной буферизации в режиме транзакции в течение визуализации графического интерфейса пользователя.
Процедура 300 начинается в операции 310, где может инициироваться транзакция. Относящиеся к пользовательскому интерфейсу транзакции могут использоваться, чтобы управлять множеством обновлений UI, которые могут быть собраны вместе в ходе двойной буферизации. Инициация транзакции может отметить начало множества обновлений UI, подлежащих двойной буферизации.
В операции 315 может обеспечиваться буфер 130 визуализации. Обычно, буфер 130 визуализации обеспечивается в виде внеэкранного буфера для вычерчивания обновлений UI в нем, не делая их видимыми. Буфер 130 визуализации может обеспечиваться менеджером 120 двойной буферизации. В операции 320 может обеспечиваться прозрачное многослойное окно 140. Прозрачное многослойное окно 140 также может обеспечиваться менеджером 120 двойной буферизации. Прозрачное многослойное окно 140 подобно внеэкранному буферу 130 визуализации, поскольку в нем можно вычерчивать невидимо для пользователя. Однако прозрачное многослойное окно 140 может фактически находиться в пространстве отображения его прозрачности, установленной в значение "полная", чтобы быть невидимым.
В операции 322 могут идентифицироваться окна в качестве связанных с запрошенным действием. Различные окна могут соответствовать компонентам GUI, используемого прикладным программным обеспечением 110, в то время как выполняется запрошенное действие. Эти окна компонентов GUI могут включать в себя управляющие элементы, меню, представления, панели инструментов или любые другие окна, составляющие GUI.
В операции 325 может поддерживаться рисование в буфер 130 визуализации, пока выполняется запрошенное действие. В частности, рисование согласно окнам, идентифицированным в операции 322, может использовать буфер 130 визуализации. В течение транзакции с двойной буферизацией, обновления UI, относящиеся к выполняемой операции (например, начальная загрузка приложения, изменение представлений, доступ к файлу, доступ к сетевому ресурсу и так далее), могут рисоваться в буфер 130 визуализации вне экрана с тем, чтобы они не были видимыми пользователю. Множественные компоненты UI, или окна, могут быть двойным образом буферизованными посредством общего буфера 130 визуализации.
В операции 330, рисование в прозрачное многослойное окно 140 может поддерживаться, как надлежит. Обновления UI двойного буфера по отношению к прозрачному многослойному окну 140 могут быть надлежащими, когда код UI не может быть модифицирован для визуализации обновлений для внеэкранного буфера 130 визуализации. Компонент приложения, или окно, как идентифицировано в операции 322, может предотвращать модификацию, если не имеется в наличии исходного кода, когда он является внешне поставляемой библиотекой или компонентом, таким как управляющий элемент ACTIVEX®, или когда возможно интересы времени, бюджета или передачи права препятствуют модификации кода. Вместо использования внеэкранного буфера 130 визуализации, UI может выполнять свои обновления для прозрачного многослойного окна 140, которое сконфигурировано, чтобы было полностью прозрачным.
В операции 335 информация о ходе выполнения может поставляться на поток 400 экрана-заставки. Такая информация о ходе выполнения может поддерживать на экране-заставке 160 отображение индикаторов хода процесса, таких как индикатор 170 выполнения. Эти индикаторы состояния могут предоставлять пользователю информацию относительно состояния транзакции, пока она находится в процессе выполнения.
В операции 340, может быть выявлено завершение запрошенного действия. Например, если файл открывается, может быть выявлено завершение открытия файла. Такое выявление может, отчасти, обеспечить поддержку автоматически завершаемой транзакции. В операции 345, может быть выявлен покой (отсутствие входных сигналов) для состояния пользовательского интерфейса. Выявление, что обновления UI были завершены, может обеспечить поддержку привязки завершения поддерживаемого транзакцией действия к обновлению состояния UI в рамках приложения 110. Автоматическое прекращение транзакции может поддерживаться, отчасти, путем определения завершения различных необходимых событий перерисовки, таких как визуализируемого текста, включаемых кнопок, отключаемых кнопок и т.д.
В операции 350, окончание транзакции может сигнализироваться на поток 400 экрана-заставки. Уведомление потока 400 экрана-заставки, что транзакция была выполнена и теперь завершается, может обеспечить поддержку автоматического завершения потока 400 экрана-заставки и может прекратить отображение экрана-заставки 160.
В операции 355, обновления, которые были выполнены в буфере визуализации 130 в течение транзакции, могут быть поданы на дисплей 190 компьютера. Это может поддерживать менеджер 120 двойной буферизации. В случаях, когда прозрачное многослойное окно 140 также было использовано, подача битов буфера 130 визуализации может включать в себя извлечение обновлений из буфера 130 визуализированного в прозрачное многослойное окно 140.
В операции 360, прозрачное многослойное окно 140 может быть переведено в являющееся полностью непрозрачным. Таким образом, прозрачность многослойного окна может быть выключена. В этой одной операции накопленные обновления UI, связанные с транзакцией, могут делаться видимыми пользователю почти мгновенно. Таким образом, может поддерживаться сглаживающее, менее запутывающее представление пользовательского интерфейса. Процедура 300 может возвратиться на процедуру 200 после операции 360.
Теперь с обращением на Фиг. 4, будут приведены дополнительные подробности относительно вариантов осуществления, представленных в документе для двойной буферизации графического интерфейса пользователя, обеспечивающего при этом отображение экрана-заставки согласно аспектам варианта осуществления, представленного в документе. В частности, на Фиг.4 показана блок-схема, иллюстрирующая аспекты процесса 400 для поддержки экрана-заставки в графическом интерфейсе пользователя.
Процедура 400 начинается в операции 410, где можно создать экземпляр потока 150 экрана-заставки. В операции 420, поток 150 экрана-заставки может поддерживать отображение экрана-заставки 160, пока происходит осуществляемое в режиме транзакции действие пользователя. Поток 150 экрана-заставки может быть частью прикладного программного обеспечения 110, но исполняться в виде отдельного потока, процесса или другого параллелизованного механизма из модулей прикладного программного обеспечения 110, связанных с осуществляемым в режиме транзакции действием пользователя. Такое выделение в поток 150 экрана-заставки операций, относящихся к экрану-заставке 160, может давать возможность, чтобы экран-заставка 160 обновлялся и обрабатывался реагирующим и интерактивным образом, даже если осуществляемая в режиме транзакции операция находится в процессе выполнения и потенциально задержана.
В операции 430, экран-заставка 160, как поддерживается потоком 150 экрана-заставки, может предоставлять пользователю один или несколько индикаторов хода процесса. Индикаторы хода процесса могут предоставить пользователю информацию о выполняемых действиях и примерной продолжительности, какие могут иметь связанные задержки. Примером индикатора хода процесса является индикатор 170 выполнения, который может показать процентное отношение хода выполнения, связанного с выполняемым действием.
В операции 440 экран-заставка 160, как поддерживается потоком 150 экрана-заставки, может предоставить пользователю UI отмены. Например, на экране-заставке 160 может быть расположена кнопка 180 отмены. Такой механизм отмены может предоставить пользователю безопасный способ прервать осуществляемую в режиме транзакции операцию. Например, пользователь может не желать продолжать ожидание завершения запрошенного действия. Подобным образом пользователь может понять, что инициация транзакции была выполнена с ошибкой. В ситуациях, таких как эти, пользователь может оперировать UI отмены, обеспеченным на экране-заставке 160. Пользовательское действие (интерфейсом) UI отмены может быть выявлено согласно операции 450. Если отмена выявлена, ее можно сигнализировать на приложение согласно операции 460. Сигнализация пользовательского запроса отмены на приложение может обеспечить поддержку корректного прекращения приложением запрошенного действия. После операции 460 может быть завершен поток 150 экрана-заставки и может быть прекращено отображение экрана-заставки 160.
Пока нет запрошенной отмены, операция 470 может принять сигнал завершения от процедуры 300. Если действие в режиме транзакции, поддерживаемое процедурой 300, было завершено, процедура 400 может быть уведомлена, как обсуждено относительно операции 350, как проиллюстрировано на Фиг.3. Выявление этого уведомления в операции 470 может обеспечить поддержку завершения потока 150 экрана-заставки и связанного закрытия экрана-заставки 160.
Хотя нет сигнала завершения, выявленного в операции 470, операция 480 может принять от процедуры 300 сигнал хода выполнения, как обсуждено относительно операции 335, проиллюстрированной на Фиг.3. В операции 490, информация о ходе выполнения, сигнализированная на процедуру 400 в операции 480, может использоваться для обновления индикаторов хода процесса на экране-заставке 160, как предусмотрено в операции 430. После операции 490, процедура 400 может осуществить возврат на операцию 450 и продолжаться, как обсуждено выше, пока транзакция не будет отменена или завершена.
Обращаясь теперь на Фиг.5, иллюстративная архитектура вычислительной системы может исполнять описанные в документе программные компоненты для двойной буферизации графического интерфейса пользователя, обеспечивающего при этом отображение экрана-заставки. Архитектура вычислительной системы, показанная на Фиг.5, иллюстрирует традиционный настольный компьютер, переносной компьютер или компьютер сервера и может использоваться для исполнения любых аспектов для программных компонентов, представленных в документе. Однако следует оценить, что описанные программные компоненты могут также выполняться в других примерных вычислительных средах, таких как мобильные устройства, телевизионные приемники, телевизионные абонентские приставки, киоски, мобильные информационные системы, мобильные телефоны, встроенные системы, или иных.
Архитектура вычислительной системы, проиллюстрированная на Фиг.5, может включать в себя центральный процессор 10 (ЦП, CPU), системную память 13, включающую в себя оперативное запоминающее устройство 14 (ОЗУ, RAM) и постоянное запоминающее устройство 16 (ПЗУ, ROM), и системную шину 11, которая может связывать системную память 13 с ЦП 10. Базовая система ввода-вывода, содержащая основные программы, которые помогают передавать информацию между компонентами внутри компьютера 5, например, в течение запуска, может храниться в ПЗУ 16. Компьютер 5 может дополнительно включать в себя запоминающее устройство 15 большой емкости для хранения операционной системы 18, программного обеспечения, данных и различных программных модулей, например, связанных с прикладным программным обеспечением 110. Прикладное программное обеспечение 110 может исполнять программные компоненты, описанные в документе.
Запоминающее устройство 15 большой емкости может быть соединено с ЦП 10 через контроллер запоминающего устройства большой емкости (не иллюстрируется), соединенный с шиной 11. Запоминающее устройство большой емкости и связанные с ним читаемые компьютером носители могут обеспечивать для компьютера 5 энергонезависимое ЗУ. Хотя описание читаемых компьютером носителей, содержащееся в документе, относится к ЗУ большой емкости, такому как накопитель на жестком диске или на компакт-дисках, специалисты в данной области техники должно оценить, что читаемые компьютером носители могут быть любыми имеющимися носителями компьютера, к которым может осуществлять доступ компьютер 5.
В качестве примера, а не ограничения, читаемые компьютером носители могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как читаемые компьютером инструкции, структуры данных, программные модули или другие данные. Например, читаемые компьютером носители включают, но не ограничиваются указанным, ОЗУ, ПЗУ, стираемое программируемое ПЗУ (СППЗУ, EPROM), электрически стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM), флэш-память или другую технологию твердотельной памяти, ПЗУ на компакт-диске (CD-ROM), цифровые многофункциональные диски (DVD), диски HD DVD (высокой плотности), диски технологии BLU-RAY, или другое оптическое ЗУ, ЗУ на магнитных кассетах, магнитной ленте, магнитном диске или другие магнитные ЗУ, или любой другой носитель, который может использоваться, чтобы хранить требуемую информацию и к которому может осуществляться доступ посредством компьютера 5.
Согласно различным вариантам осуществления компьютер 5 может работать в сетевой среде, используя логические соединения с удаленным компьютером через сеть, такую как сеть 17. Компьютер 5 может соединяться с сетью 17 через блок 19 сетевого интерфейса, соединенный с шиной 11. Следует оценить, что блок 19 сетевого интерфейса также может использоваться, чтобы соединять с другими типами сетей и удаленными вычислительными системами. Компьютер 5 может также включать в себя контроллер 12 ввода/вывода для приема и обработки вводимых данных от многих других устройств, включая клавиатуру, мышь или электронное перо (не иллюстрируется). Подобным образом контроллер 12 ввода/вывода может обеспечивать вывод на дисплей 190 компьютера, принтер или другой тип устройства вывода (также не иллюстрируется). Дисплей 190 компьютера альтернативно может быть соединен с шиной 11 посредством графического адаптера или графического процессора (также не иллюстрируется).
Как кратко упомянуто выше, ряд программных модулей и файлов данных могут храниться в ЗУ 15 большой емкости и ОЗУ 14 компьютера 5, включая операционную систему 18, подходящую для управления работой сетевого настольного компьютера, переносного компьютера, компьютера сервера, или другой вычислительной среды. Запоминающее устройство 15 большой емкости, ПЗУ 16 и ОЗУ 14 также могут хранить один или несколько программных модулей. В частности, запоминающее устройство 15 большой емкости, ПЗУ 16 и ОЗУ 14 могут хранить прикладное программное обеспечение 110 для исполнения посредством ЦП 10. Прикладное программное обеспечение 110 может включать в себя программные компоненты для реализации процессов, обсужденных подробно относительно Фиг. 1-4. Запоминающее устройство 15 большой емкости, ПЗУ 16 и ОЗУ 14 также могут хранить другие типы программных модулей.
На основании вышеизложенного следует оценить, что в документе представлены технологии для двойной буферизации в режиме транзакции графического интерфейса пользователя, обеспечивающего при этом отображение экрана-заставки. Хотя представленный в документе объект изобретения был описан на языке, специфическом для структурных признаков, методических действий и читаемых компьютером носителей компьютера, следует понимать, что изобретение, определенное в прилагаемой формуле изобретения, не является обязательно ограниченным конкретными признаками, действиями или носителями, описанными в документе. Предпочтительнее конкретные признаки, действия и носители раскрыты в виде примерных форм для реализации пунктов формулы изобретения.
Описанный выше объект изобретения представлен только в качестве иллюстрации и не должен рассматриваться ограничительным. Могут выполняться различные модификации и изменения по отношению к объекту изобретения, описанному в документе, не следуя проиллюстрированным и описанным примерным вариантам осуществления и приложениям, и без выхода за рамки истинного существа и объема настоящего изобретения, которое изложено в нижеследующей формуле изобретения.
Класс G06F3/048 средства взаимодействия для графических интерфейсов пользователя, например взаимодействие через окна, иконки или меню
Класс G06F3/14 вывод цифровых данных на индикаторные приборы
Класс G06T1/00 Обработка данных изображения общего применения